Slide 1

Slide 1 text

Reactive Streams. 4 interfaces. Et après ? Julien Ponge

Slide 2

Slide 2 text

“Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure.” — https:/ /www.reactive-streams.org/ Mutiny! Photo by Arno Senoner on Unsplash

Slide 3

Slide 3 text

org.reactivestreams.* (Java 6 legacy) java.util.concurrent.Flow.* (since JDK 9) Back-pressured, asynchronous, non-blocking (see Reactive Streams TCK) < your own library / client / driver / … > APIs Protocol User-facing APIs

Slide 4

Slide 4 text

Show me what’s reactive code like? Show me why reactive matters? in a containers world

Slide 5

Slide 5 text

The 20* days test XYZ MVC Quarkus (classic, JVM) Quarkus (classic, native) AWS EC2 800 req/min 800 req/min 800 req/min

Slide 6

Slide 6 text

$$$ Application Instance type Price per month (Instance + ESB) XYZ MVC T2.medium (2 vCPU, 4 Gb) 26.08 $ XYZ MVC T2.small (2 vCPU, 1 Gb) 14.70 $ (1.86% of timeout) Quarkus T2.small (2 vCPU, 1 Gb) 14.70 $ Quarkus T2.micro (1 vCPU, 1Gb) 9.15 $ Quarkus Native T2.micro (1 vCPU, 1Gb) 9.15 $ Quarkus Native T2.nano (1 vCPU, 0.5 Gb) 6.25 $ (3.64% of timeout) Heap Size: 256Mb

Slide 7

Slide 7 text

Ok, 4 interfaces. Must be easy, right? Publisher Subscriber Processor Subscription

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Mutiny Zero (44 Kilobytes JAR) RS <-> Flow Mutiny Zero Adapters Vert.x -based stream publishers Mutiny Zero — minimal helper libraries to make publishers

Slide 14

Slide 14 text

Mutiny 2 Hibernate Reactive 2 Reactive Messaging Quarkus 3 Past Java 6 legacy — Transitioning to JDK Flow

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Mutiny! + many more!

Slide 17

Slide 17 text

Julien Ponge Q&A