gpt4 book ai didi

spring - 如何使用 Spring 5 WebClient 等待所有请求完成?

转载 作者:行者123 更新时间:2023-12-04 23:13:04 24 4
gpt4 key购买 nike

我有一个简单的 Java 程序,它使用 Spring WebClient 发送多个请求。每个返回一个单声道,我使用 response.subscribe() 来检查结果。

但是,我的主执行线程在处理所有请求之前完成,除非我添加一个 long Thread.sleep()。

使用 CompletableFutures,您可以使用: CompletableFuture.allOf(futures).join();

有没有办法等待所有 Mono 完成?

最佳答案

正如 the Project Reactor documentation 中所解释的那样,直到您将 subscribe 转换为 Publisher 之前,什么都不会发生。该操作返回 Disposable 的实例,这意味着该操作可能仍在进行中。

如果您不在非阻塞 react 管道(例如,HTTP 请求/响应交换或批处理操作)的中间,并且您需要在退出 VM 之前等待该管道完成 - 那么您可以 block() .这实际上是少数“允许”的用例之一。

你的问题并没有真正解释你所说的“检查回复”是什么意思。在这里,我们将只获取 POJO(如果 HTTP 响应状态不是 200 或者如果我们无法反序列化响应,则会发送错误信号)。
在您的示例中,您可能有以下内容:

Mono<User> one = this.webClient...
Mono<Account> two = this.webClient...
Mono<Book> three = this.webClient...

// we want all requests to happen concurrently
Mono<Void> all = Mono.when(one, two, three);
// we subscribe and then wait for all to be done
all.block();

关于spring - 如何使用 Spring 5 WebClient 等待所有请求完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50740795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com