doc: 阅读Sinks.many().multicast()文档
This commit is contained in:
@@ -74,6 +74,8 @@
|
|||||||
- [`Sinks.many().unicast().onBackpressureBuffer(args?)`](#sinksmanyunicastonbackpressurebufferargs)
|
- [`Sinks.many().unicast().onBackpressureBuffer(args?)`](#sinksmanyunicastonbackpressurebufferargs)
|
||||||
- [onBackpressureBuffer](#onbackpressurebuffer)
|
- [onBackpressureBuffer](#onbackpressurebuffer)
|
||||||
- [Sinks.many().multicast().onBackpressureBuffer(args?)](#sinksmanymulticastonbackpressurebufferargs)
|
- [Sinks.many().multicast().onBackpressureBuffer(args?)](#sinksmanymulticastonbackpressurebufferargs)
|
||||||
|
- [autoCancel](#autocancel)
|
||||||
|
- [Sinks.many().multicast().directAllOrNothing()](#sinksmanymulticastdirectallornothing)
|
||||||
>>>>>>> 8d41980 (doc: 阅读transient errors文档)
|
>>>>>>> 8d41980 (doc: 阅读transient errors文档)
|
||||||
|
|
||||||
# Reactor
|
# Reactor
|
||||||
@@ -1139,6 +1141,25 @@ Sinks的类别包括:
|
|||||||
> 在为`onBackpressureBuffer`指定了`Queue`的情况下,如果`queue已满并且下游并没有向上游发送足够的reqeust`时,`sink将会拒绝该value的推送`。
|
> 在为`onBackpressureBuffer`指定了`Queue`的情况下,如果`queue已满并且下游并没有向上游发送足够的reqeust`时,`sink将会拒绝该value的推送`。
|
||||||
|
|
||||||
#### Sinks.many().multicast().onBackpressureBuffer(args?)
|
#### Sinks.many().multicast().onBackpressureBuffer(args?)
|
||||||
|
对于该方法创建的`multicast Sinks.Many`可以向多个subscribers发送数据,并且对每个subscriber都能独立地接收backpressure。
|
||||||
|
|
||||||
|
> 对于每个subscriber,只会接收在其subscribe之后推送到sink的signal
|
||||||
|
|
||||||
|
基础的multicast sink可以通过`Sinks.many().multicast().onBackpresuureBuffer()`来进行创建。
|
||||||
|
|
||||||
|
##### autoCancel
|
||||||
|
在默认情况下,如果所有subscribers都被取消(`cancelled`),即取消订阅,其会对internal buffer进行清空,并且停止接收新的subscriber。
|
||||||
|
|
||||||
|
如果想要修改`autoCancel`的行为,可以调用`Sinks.many().multicast()`中的静态工厂方法,通过autoCancel参数来调整`autoCancel`的行为。
|
||||||
|
|
||||||
|
#### Sinks.many().multicast().directAllOrNothing()
|
||||||
|
该方法创建的拥有最简单的backpressure处理策略:
|
||||||
|
- 如果任何subscriber处于`too slow`状态(demand为0),那么对于所有的subscriber,该onNext都会被丢弃。
|
||||||
|
|
||||||
|
但是,slow subscribers并不会被终止,`一旦slow subscribers又发送了request`,所有subscribers都会重新从sinks.many接收数据。
|
||||||
|
|
||||||
|
在`Sinks.many()`终止后(通常是通过调用`emitError, emitComplete`方法),其仍然允许新的subscriber对其进行订阅,但是只会对新订阅者replay termination signal。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user