如何在计时器(例如 1 秒(之后停止 Flux 中的发布(流(,如果仍有数字,则不会发布。例如,在 1000个数字之后,它们将不会打印。
@Test
public void test() {
Flux.range(0, 20000)
// hier
.delayElements(Duration.ofMillis(1))
.parallel(2)
.runOn(Schedulers.parallel())
.doOnNext(i -> {
System.out.println(i);
})
.sequential()
.blockLast();
}
您可以使用Flux.take(Duration)
使 Flux 在一定持续时间后完成。
对于您发布的代码,阈值为 1 秒,如下所示:
Flux.range(0, 20000)
// hier
.delayElements(Duration.ofMillis(1))
.parallel(2)
.runOn(Schedulers.parallel())
.doOnNext(i -> {
System.out.println(i);
})
.sequential()
.take(Duration.ofSeconds(1)) // <--
.blockLast();