我想创建一个Flux
,其中的元素按需生成且预取次数有限。
我尝试了以下操作,但由于generateElements
变得很大(1011),因此该代码似乎无法处理反压力:
AtomicInteger generateElements = new AtomicInteger(0);
Flux<Integer> source = Flux
.create(emitter -> {
while (true)
emitter.next(generateElements.getAndIncrement());
})
.subsribeOn(Schedulers.elastic())
.limitRate(1);
source.take(4).subsribe(System.out::println);
assertThat(generateElements.get()).isEqualTo(5);
如何使Flux
只能进行一次预取?
答案 0 :(得分:2)
您可以使用Flux.generate
,它在定义单个物料发射的地方应该是可调用的:
curl http://www.example.com --resolve www.example.com:80:127.0.0.1