如何限制 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 毫秒内删除传播项之后的所有项