Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Spring5WebClient等待所有请求完成?_Spring_Spring Webflux_Project Reactor - Fatal编程技术网

如何使用Spring5WebClient等待所有请求完成?

如何使用Spring5WebClient等待所有请求完成?,spring,spring-webflux,project-reactor,Spring,Spring Webflux,Project Reactor,我有一个简单的Java程序,它使用SpringWebClient发送多个请求。每个返回一个mono,我使用response.subscribe()检查结果 但是,我的主执行线程在处理所有请求之前完成,除非我添加一个长线程。sleep() 对于CompletableFutures,您可以使用:CompletableFuture.allOf(futures.join() 是否有办法等待所有Mono的完成?如中所述,在订阅出版商之前,一切都不会发生。该操作返回一个可丢弃的实例,这意味着该操作可能仍在进

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

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

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

是否有办法等待所有Mono的完成?

如中所述,在订阅
出版商之前,一切都不会发生。该操作返回一个可丢弃的
实例,这意味着该操作可能仍在进行中

如果你不在一个无阻塞的反应管道(例如,HTTP请求/响应交换或批处理操作)的中间,并且在退出VM之前需要等待该管道的完成,那么你可以<代码> Bug()/<代码>。这实际上是为数不多的“允许的”用例之一

你的问题并不能真正解释你所说的“检查回答”是什么意思。在这里,我们将只获取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();
Mono one=this.webClient。。。
Mono 2=此.webClient。。。
Mono三=这个.webClient。。。
//我们希望所有请求同时发生
Mono all=Mono.when(一、二、三);
//我们订阅,然后等待一切完成
all.block();

此方法按预期工作。我有一个问题,关于如何保存来自webclient发出的单个rest调用的响应(到数组或hashmap)。正如作者所说,他需要从所有这些Mono中获得累积结果。为什么不可能?