Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vert.x Montreal JUG 2018
Search
Julien Ponge
October 25, 2018
Programming
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vert.x Montreal JUG 2018
Julien Ponge
October 25, 2018
More Decks by Julien Ponge
See All by Julien Ponge
Quarkus Insights 2023-03-06
jponge
0
130
Reactive Streams. 4 Interfaces. Et après ?
jponge
0
70
Scalability and resilience in practice: current trends and opportunities
jponge
0
310
Eclipse Vert.x at BruJUG 2019
jponge
0
220
Du réactif au service du pneu connecté
jponge
0
400
Bringing Reactive to Enterprise Java Developers
jponge
0
350
Golo LyonJUG 2019
jponge
0
310
Bringing Reactive to Enterprise Application Developer // Reactive Summit 2018
jponge
0
300
Démystifier le réactif et l'orchestration de services avec Vert.x, Kubernetes et Kotlin
jponge
0
300
Other Decks in Programming
See All in Programming
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
440
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
自分的「カンファレンスの楽しみ方」
syumai
0
190
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
500
ソフトウェアラスタライザ
fadis
1
790
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
5
1.7k
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
120
AIの中の人になってみる
htkym
0
160
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
170
Featured
See All Featured
The Curse of the Amulet
leimatthew05
2
14k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
920
Making Projects Easy
brettharned
120
6.7k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Building AI with AI
inesmontani
PRO
1
1.2k
Between Models and Reality
mayunak
4
450
The Cost Of JavaScript in 2023
addyosmani
55
10k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
360
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
260
Transcript
Julien Ponge Thomas Segismont @jponge @tsegismont
Shameless plug
Reactive? (because resources are scarce)
None
Application
Reactive systems Reactive streams Reactive programming Reactive “Responding to stimuli”
Manifesto, Actor, Messages Resilience, Elasticity, Scalability, Asynchronous, non-blocking Data flow Back-pressure Non-blocking Data flow Events, Observable Spreadsheets Akka, Vert.x Akka Streams, RxJava, Reactor, Vert.x Reactor, Reactive Spring, RxJava, Vert.x
while (isRunning) { String line = bufferedReader.readLine(); switch (line.substring(0, 4))
{ case "ECHO": bufferedWriter.write(line); break // ... // other cases ( ...) // ... default: bufferedWriter.write("UNKW Unknown command"); } }
x 1000 = !
Virtual machines, Containers, etc
None
Vert.x? (async all the things!)
Eclipse Vert.x Open source project started in 2012 Eclipse /
Apache licensing A toolkit for building reactive applications for the JVM 7K ⋆ on # Built on top of $ https://vertx.io % @vertx_project
& ' & Http server verticle Database client verticle
Event Bus ) ' “Details for user 1234?” “{data}” 4 instances 1 instance
Events Thread Event Loop & & & & &
(demo) Hello Vert.x
None
foo.a(1, res1 -> { if (res1.succeeded()) { bar.b("abc", 1, res2
-> { if (res.succeeded()) { baz.c(res3 -> { dosomething(res1, res2, res3, res4 -> { // (...) }); }); } }); } }); “Callback hell”
Callbacks RxJava 1 + 2 Quasar (vertx-sync) Kotlin coroutines (core)
(codegen)
Boiler Vroom (in the mix)
(demo)
* ) WebMidi JSON / Event Bus
const eventBus = new EventBus("/eventbus") traktorIn.addListener("controlchange", 5, (event) => {
eventBus.publish("boilervroom.vu-meter", { type: "volume-level", value: event.value }) }) eventBus.publish("boilervroom.fromtraktor", { type: "filter", number: 1, value: (event.value !== 0) }) Event Bus
+ , - . IceCast VLC * Chrome / DJ
Booth app Clients / NuProcess MIDI Event Bus Event Bus
SockJSHandler sockJSHandler = SockJSHandler.create(vertx); PermittedOptions permittedOptions = new PermittedOptions() .setAddressRegex(“boilervroom\\
..+”); BridgeOptions bridgeOptions = new BridgeOptions() .addInboundPermitted(permittedOptions) .addOutboundPermitted(permittedOptions); sockJSHandler.bridge(bridgeOptions); router.route("/eventbus /*").handler(sockJSHandler);
+ , - . IceCast VLC Clients / OGG/Vorbis OGG/Vorbis
MP3 MP3 HTTP 1.0 HTTP 1.1 HTTP Client Event bus → Chunked HTTP
router.get("/audiostream").handler(context -> { HttpServerResponse response = context.response(); response.setStatusCode(200); response.setChunked(true); response.putHeader("Content-Type",
"audio/mpeg"); MessageConsumer<Buffer> consumer = eventBus.consumer("boilervroom.audiostream"); consumer.bodyStream().handler(buffer -> { if (!response.writeQueueFull()) { response.write(buffer); } }); response.endHandler(v -> { consumer.unregister(); }); response.exceptionHandler(t -> { consumer.unregister(); }); });
Outro
Unified end-to-end reactive model + ecosystem (not just APIs…) For
all kinds of distributed applications (even the small-scale ones) Flexible toolkit, not a framework (your needs, your call)
https: //youtu.be/ZkWsilpiSqw 0 Applications réactives avec Eclipse Vert.x 1 Building
Reactive Microservices in Java https: //goo.gl/ep6yB9 1 Guide to async programming with Vert.x for Java developers https: //goo.gl/AcWW3A
Q&A Use mlponge to get 50% off