如何等待多个 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);
如何链接 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);