这需要背压还是有更简单的方法?
例如在下面的代码中,我希望每 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)