小编Gau*_*rav的帖子

如何减缓排放形成 Flux.interval?

这需要背压还是有更简单的方法?

例如在下面的代码中,我希望每 2 秒调用一次自旋函数。有时“旋转”可能需要比 2 秒间隔更长的时间来计算,在这种情况下,我不希望任何间隔排放排队。但在下面的代码中,他们确实排队。

在下面的代码中,前 4 个自旋函数调用需要 10 秒,其余需要 1 秒。因此,一旦函数变得更快, Flux.interval 排放就会“赶上”。但是,我不希望发生任何“追赶”

import reactor.core.publisher.Flux;

import java.time.Duration;
import java.util.Date;
import java.util.Iterator;

public class Test {
   public static void main(String[] args) {
        Iterator<Integer> secs = new Iterator<Integer>() {
            private int num = 0;
            @Override
            public boolean hasNext() {
                return true;
            }
            @Override
            public Integer next() {
                return num++ < 4 ? 10 : 1;
            }
        };

        Flux.interval(Duration.ofSeconds(5))
                .map(n -> {spin(secs.next()); return n;})
                .doOnNext(n -> log("Processed " + n))
                .blockLast(); …
Run Code Online (Sandbox Code Playgroud)

project-reactor

6
推荐指数
1
解决办法
3434
查看次数

标签 统计

project-reactor ×1