如何等待反应器中助焊剂的处置

How to wait for disposal of Flux in Reactor

提问人:geanakuch 提问时间:11/13/2023 更新时间:11/13/2023 访问量:41

问:

我正在 Spring Webflux 中使用 Reactor Flux。 我想等待 Flux 的完成(填写列表),同时同时完成其他一些东西。现在我的问题是,我怎样才能等待完成而不必像这样依赖:Thread.sleep

List<MyObject> results = new ArrayList<>();
Disposable disposable = myFlux.subscribe(results::add);

//do some other stuff

//now wait for the flux to finish
while(!disposable.isDisposed()) {
  Thread.sleep(500L);
}

return results;
java spring-webflux 项目-reactor

评论

0赞 Peng 11/13/2023
您可以尝试在多线程模型中使用算子,使用可能会导致大量空闲的 CPU 时间,并失去响应式编程的意义publish
1赞 Peng 11/13/2023
或者你可以阅读 javadoc juc 包,可能适合你的场景CountDownLatch
0赞 amanin 11/13/2023
为了保持 Reactor 调度/响应式模型的优势,最好尝试继续使用 FLux/Mono 对象。例如,您可以使用 .myFlux.collectList().zipWith(otherOperationProducingMono)
0赞 Rob Spoor 11/13/2023
你不能像现在这样摆脱列表,然后简单地返回吗?如果需要,您可以将其拆分为两个语句:,执行其他操作,返回。myFlux.collectList().block()Mono<List<MyObject>> resultsMono = myFlux.collectList()resultsMono.block()
0赞 Igor Artamonov 11/13/2023
您提出的解决方案回答了您的直接问题。但是你永远不会这样做,也永远不需要真正的代码,所以我建议重新表述这个问题,以解释你真正想在代码中做什么。

答: 暂无答案