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 |