doc: 阅读project reactor关于sinks的文档
This commit is contained in:
@@ -70,6 +70,7 @@
|
||||
- [在多线程环境下安全的使用`Sinks.One`和`Sinks.Many`](#在多线程环境下安全的使用sinksone和sinksmany)
|
||||
- [`tryEmit` \& `emit`](#tryemit--emit)
|
||||
- [Processor](#processor)
|
||||
- [`asFlux`和`asMono`](#asflux和asmono)
|
||||
>>>>>>> 8d41980 (doc: 阅读transient errors文档)
|
||||
|
||||
# Reactor
|
||||
@@ -1100,8 +1101,23 @@ EmitResult result = replaySink.tryEmitNext(4);
|
||||
|
||||
> 在使用`EmitFailureHandler.busyLooping`时,其返回的示例包含状态,并不能被重用
|
||||
|
||||
|
||||
|
||||
#### `asFlux`和`asMono`
|
||||
`Sinks.Many`支持被转化为`Flux`,下游可以对`Sinks.Many`转化后的`Flux`进行订阅,实例如下所示:
|
||||
```java
|
||||
Flux<Integer> fluxView = replaySink.asFlux();
|
||||
fluxView
|
||||
.takeWhile(i -> i < 10)
|
||||
.log()
|
||||
.blockLast();
|
||||
```
|
||||
同样的,`Sinks.One`和`Sinks.Empty`可以通过`asMono()`方法被转化为`Mono`
|
||||
|
||||
Sinks的类别包括:
|
||||
- `many().multicast()`:sink只会基于subscribers的backpressure请求`将最新的数据传递到其subscribers`
|
||||
- `最新的数据`代表`subscriber`订阅之后的数据
|
||||
- `many().unicast()`:和`many().multicast()`类似,也是在订阅之后将`最新的数据`推送给订阅者,但是和`many().multicast()`不同之处如下:
|
||||
- `many().unicast()`带有缓冲区,在第一个订阅者订阅`many().unicast()`之前,会将推送给`many().unicast()`的数据都缓冲到缓冲区中,待后续有订阅者订阅后,会将缓冲区数据发送给订阅者
|
||||
- `many().multicast()`默认不带有缓冲区
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user