In a nutshell, reactive programming is about non-blocking, event-driven applications that scale with a small number of threads with back pressure as a key ingredient that aims to ensure producers to not overwhelm consumers.
The main goal of Reactive Streams is to govern the exchange of stream data across an asynchronous boundary — think passing elements on to another thread or thread-pool — while ensuring that the receiving side is not forced to buffer arbitrary amounts of data.
Common interfaces and a TCK.
Allows for interoperation of various implementations
RxJava
Akka
Project Reactor
+ other more specialized
Semantically equivalent to Reactive Streams.
Part of the JDK.
Rules of Reactive Streams apply.
Ask the developer of RxJava.
Reactive server side web framework based on Project Reactor.
Reactive Persistence API for
MongoDB
Cassandra
Redis
Uses Reactor by Default, but supports RxJava as well.
Overload → Network based Time Out
Works only with full/even load.
Assymetric Load → Wasted Resources
Overload → Network based Time Out
Publisher may only send what requested.
Combines Subscriber and Publisher
map: transform events
flatmap: many elements from one
filter
buffer n elements
stop after some time
work on a special Thread-Pool
Publisher → Mono, Flux
Processors → methods on Mono & Flux
Lets play!
Not Flow/Reactive Stream based
Mailing List: jdbc-spec-discuss@openjdk.java.net
Run on Thread Pools
Dad, Board&Roleplaying Gamer, Runner, Freeletics Masochist
JUG Organizer
better for self study