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);