Java 项目反应器的并行处理';s通量
我对项目反应器或反应式编程非常陌生,所以我可能做错了什么。我正在努力构建一个流,它可以实现以下功能: 给定一个类实体:Java 项目反应器的并行处理';s通量,java,project-reactor,Java,Project Reactor,我对项目反应器或反应式编程非常陌生,所以我可能做错了什么。我正在努力构建一个流,它可以实现以下功能: 给定一个类实体: Entity { private Map<String, String> items; public Map<String, String> getItems() { return items; } } 这是可行的,但是handler::processItem调用不会在所有项目上同时运行。我尝试将dispatch
Entity {
private Map<String, String> items;
public Map<String, String> getItems() {
return items;
}
}
这是可行的,但是handler::processItem
调用不会在所有项目上同时运行。我尝试将dispatch
和publishOn
与io
和async
SchedulerGroup
以及各种参数一起使用,但调用仍然在一个线程上连续运行。
我做错了什么
除此之外,我相信总的来说上面的内容是可以改进的,所以任何建议都将受到欢迎
谢谢您需要另一个平面地图,为每个单独的地图元素分叉并连接计算:
Mono.fromFuture(readEntity())
.flatMap(v -> Flux.fromIterable(v.getItems().entrySet()))
.flatMap(v -> Flux.just(v)
.publishOn(SchedulerGroup.io())
.doOnNext(handler::processItem))
.consume(handler::doneProcessing);
谢谢@akarnokd,你的建议听起来很有希望,但由于时间的压力,我选择了更简单且有合理记录的CompletableFutures。
Mono.fromFuture(readEntity())
.flatMap(v -> Flux.fromIterable(v.getItems().entrySet()))
.flatMap(v -> Flux.just(v)
.publishOn(SchedulerGroup.io())
.doOnNext(handler::processItem))
.consume(handler::doneProcessing);