Reactor - CCH0124/spring-sandbox GitHub Wiki
- non-blocking
- Flux for [N] elements
- Stream of message
- Backpressure
- Mono for [0|1] elements
- No Stream
- No Backpressure
- A light weight publisher
有三個元素,會經過中間的 operator 作一些操作,並得到新的流。
在 Reactor 中有 publisher<T>
的介面。其,提供兩種不同的實作 Mono<T>
和 Flux<T>
。
o
Mono --------------------> subscriber
| |
| |
----------subscription<------- request=3
Method | Usage |
---|---|
just | |
empty | |
error | |
fromSupplier | |
fromCallable | |
fromFuture | |
fromRunnable | |
defer |
Flux.create and FluxSink
Flux.generate and SynchronousSink
FluxSink and SynchronousSink diff
baeldung | flux-create-vs-flux-generate
Flux.create | Flux.generate |
---|---|
Accepts a Consumer<FluxSink<T>>
|
Accepts a Consumer<SynchronousSink<T>>
|
Consumer is invoked only once | Consumer is invoked again and again |
Consumer can emit 0..N elements immediateely without worring about downstream demand. | Consumer can emit only one element. Dpwnstream demand is respected! |
Thread-safe | N/A |
baeldung | flux-create-generate#flux-create-vs-flux-generate
Method | Usage |
---|---|
filter | |
map | |
take/takeWhile/takeUntil | |
delayElements | |
do Hooks | |
onErrorReturn/onErrorResume/onErrorContinue | |
timeout | |
defaultIfEmpty/switchIfEmpty | |
handle | |
transform |