如何限制 Flux
How to throttle a Flux
使用 Reactor,我想限制从 Flux 发布事件的速率,例如最大为 10 Hz,同时丢弃其间的所有元素。我发现的唯一东西是 delayElements()
,但是如果元素以更快的速度到达,这会排队,对吧?我想要一些像 someFlux.throttle(10).subscribe()
这样的东西来使 Flux return 达到最大值。每秒 10 个元素。
有一个sample(Duration)
,所以你可以这样做:
source.sample(Duration.ofMillis(100));
(100 毫秒 = 1/10 秒,因此您每 100 毫秒最多获得 1 个元素,即每秒 10 个元素)
编辑:为了获得适当的 throttle
,还可以考虑 sampleFirst(v -> Mono.delay(Duration.ofMillis(100))
在 100 毫秒内删除传播项之后的所有项
使用 Reactor,我想限制从 Flux 发布事件的速率,例如最大为 10 Hz,同时丢弃其间的所有元素。我发现的唯一东西是 delayElements()
,但是如果元素以更快的速度到达,这会排队,对吧?我想要一些像 someFlux.throttle(10).subscribe()
这样的东西来使 Flux return 达到最大值。每秒 10 个元素。
有一个sample(Duration)
,所以你可以这样做:
source.sample(Duration.ofMillis(100));
(100 毫秒 = 1/10 秒,因此您每 100 毫秒最多获得 1 个元素,即每秒 10 个元素)
编辑:为了获得适当的 throttle
,还可以考虑 sampleFirst(v -> Mono.delay(Duration.ofMillis(100))
在 100 毫秒内删除传播项之后的所有项