如何从组播接收器确定下游需求



是否有任何方法可以确定订阅者之间对多播接收器的最小下游请求?对于常规的FluxSink,有requestdfromdownstream(),我可以使用它来实现反压,但无法找出任何等效的sink . many .

我已经尝试扫描内层,但它似乎没有显示下游需求,我能找到的最接近的是trymyitnext -但似乎这可能导致消息被缓慢的消费者丢弃,并在我检测到它之前传递给其他人。

我可以插入一个反压缓冲区,但是我从一个太大而无法完全缓冲的文件中读取事件,并且我不想要缓冲区阶段的额外开销,因为我正在读取的文件本身本质上就是一个缓冲区。有一种机制可以调节事件发布的速率(模拟时间),我可以控制接收器的上游,但除此之外,我还想让订阅者在延迟一点的情况下赶上来。

谢谢. .

FluxSink可以很容易地提供下游请求,因为只有一个下游Subscriber(例如,每个订阅一个接收器)。Flux.create)。

Sinks.Many具有许多下游模式,其中大多数允许多个订户到单个接收器实例(Sinks.many().unicast()除外)。

最好的选择确实是tryEmitNext,并注意EmitResult.FAIL_OVERFLOW

你需要仔细选择口味,以避免"为慢速消费者丢弃信息";(我猜你在尝试directBestEffort()?)

最新更新