首页 > 解决方案 > 如何等待多个 Flux 和 Mono 发布者同时完成

问题描述

如何链接 Flux 和 Mono Publishers?

我想将它们链接起来并发送响应。基本上,全部异步执行。

在这里,我使用 Mono 和 Flux 的 zip 来执行所有 Mono 发布者和 Flux 发布者。

List<Mono<?>> monoPubs = new ArrayList<>();
Mono.zip(monoPubs, mred -> result);

List<Flux<?>> fluxPubs = new ArrayList<>();
Flux.zip(fluxPubs, fres -> result);

标签: javaproject-reactor

解决方案


如果您不需要各个发布者的结果,则可以使用Mono.when等待所有发布者完成:

List<Publisher<?>> publishers = new ArrayList<>(monoPubs);
publishers.addAll(fluxPubs);

Mono.when(publishers)
    .thenReturn(result);

如果您需要发布者的结果,则可以使用Flux.merge

List<Publisher<?>> publishers = new ArrayList<>(monoPubs);
publishers.addAll(fluxPubs);

Flux.merge(publishers);

推荐阅读