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

How to wait for multiple Flux and Mono publishers to complete concurrently

如何链接 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);

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