【问题标题】:How to convert Flux<Entity> to List<Mono<Entity>>如何将 Flux<Entity> 转换为 List<Mono<Entity>>
【发布时间】:2022-08-19 02:14:23
【问题描述】:

我实际上有一个列表,我需要为每个列表提出请求。

我需要等待给定列表的所有请求完成。

如果我创建一个Flux.fromIterable(entities),然后创建.flatMap(this::makeRequest),那么我就剩下一个Flux&lt;Mono&lt;ReturnType&gt;&gt;

我已经做过的一件事是Mono.when(entities.stream().map(this::makeRequest).collect(Collectors.toList()).block()

但我不确定这是否是最好的方法,或者是否有一种方法可以使用Mono.zipFlux.fromIterable。找到最佳方法的任何帮助都会很棒。

  • makeRequest 的返回类型是什么,为什么需要 Mono 列表?
  • makeRequest 返回 Mono&lt;ReturnType&gt;。我真正想要的是在继续之前等待所有这些 Monos 完成

标签: reactive-programming spring-webflux project-reactor


【解决方案1】:

无需创建列表。您可以执行以下操作:

Flux.fromIterable(entities)
    .flatMap(this::makeRequest) // perform request for each entry
    .then() //resulting in a Mono<Void> after all requests are completed

如果要列出响应,也可以使用 .collectList() 而不是 then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 2017-06-19
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2021-07-14
    相关资源
    最近更新 更多