Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reactor 3

Avatar for Simon Baslé Simon Baslé
February 22, 2017

Reactor 3

Reactor 3, a reactive foundation for the JVM

Introduction to reactive programming, Reactor 3 and a bit of Spring 5.

(note: presentation will be re-uploaded if it is updated, so it might not 100% correspond to the version I used at talks in the past)

Avatar for Simon Baslé

Simon Baslé

February 22, 2017
Tweet

More Decks by Simon Baslé

Other Decks in Programming

Transcript

  1. 101 Reactive Programming types & operators Reactor 3 and Spring

    Reactor debugging testing and other beasts backpressure and
  2. 101 Reactive Programming types & operators Reactor 3 and Spring

    Reactor debugging testing and reactor-netty other beasts backpressure and reactor-kafka...
  3. async & blocking main thread wait & join ! new

    threads, costly ! complex BAD
  4. without sacrifice Callbacks ? Futures ? easy to block hard

    to compose callback hell ! not readable
  5. Flux.range(5, 3) .map(i -> i + 3) .filter(i -> i

    % 2 == 0) .buffer(3) 5, 6, 7 | 8, 9, 10 | 8, 10 | [8,10]|
  6. java.lang.IndexOutOfBoundsException: Source emitted more than one item at reactor.core.publisher.MonoSingle$SingleSubscriber.onNext(MonoSingle.java:120) at

    reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:314) ... ... at reactor.core.publisher.Mono.subscribeWith(Mono.java:2668) at reactor.core.publisher.Mono.subscribe(Mono.java:2629) at reactor.core.publisher.Mono.subscribe(Mono.java:2604) at reactor.core.publisher.Mono.subscribe(Mono.java:2582) at reactor.guide.GuideTests.debuggingActivated(GuideTests.java:727)
  7. 5

  8. HttpServer.create(0) .newHandler((in, out) -> out .sendWebsocket((i, o) -> o.options(opt ->

    opt.flushOnEach()) .sendString(Flux.just("test") .delayElementsMillis(100) .repeat()) ) ) .block();
  9. Credits • Springfield Plant: copyright FOX • Raised Hand: CC0

    (via Pixabay) • Checklist: CC-By Crispy (via Flickr) • Robot Devil: copyright FOX • Volume Knob: CC0 (via Pixabay) • Camel Shape: CC0 (via Pixabay) • Dromedary Shape: CC-By-SA USPN,Whidou (via Wikimedia) • Dam: CC-By-SA Matthew Hatton (via geograph.org.uk) • Cogs: CC0 (via publicdomainpictures.net) • Thread Balls: CC0 (via Pixabay) • The Fortune Teller: Georges de la Tour (public domain) • Microphone: CC0 (via Pexels) • End Sands: CC0 (via Pixabay) • logos: Pivotal, Spring, Twitter and Github logo copyright their respective companies.