如何等待多个 Flux 和 Mono 发布者同时完成

时间:2021-02-28 02:21:40

标签: java project-reactor

如何链接 Flux 和 Mono 发布者?

我想将它们链接起来并发送响应。基本上都是异步执行的。

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

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

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

1 个答案:

答案 0 :(得分:2)

如果您不需要个别发布者的结果,那么您可以使用 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);