gpt4 book ai didi

java - 如何使用 Spring WebClient 收集并行 Web 请求的结果?

转载 作者:行者123 更新时间:2023-12-02 09:36:12 25 4
gpt4 key购买 nike

我想发送并行网络请求并并行收集结果。那么我的方法应该返回聚合结果。

使用 spring-webfluxWebClient 听起来很简单。但我如何才能真正汇总结果呢?

public List<Response> aggregate(List<Object> bodys) {
List<Mono> monos = bodys.stream(body -> send(body)).collect(Collectors.toList());

//TODO how can I get all results in parallel and collect it to a response list?
List<Response> = Flux.merge(monos)...???...collectList(); //pseudeocode
}

private Mono<Response> send(Object body) {
return webClient.post().syncBode(body).bodyToMono(type);
}

重要的是:如果其中一个单声道以异常结束,其他单声道仍应执行而不是中止。

最佳答案

您需要在内部 Monos 上应用错误处理:

public Mono<List<Response>> aggregate(List<Object> bodies)
{
return Flux.fromIterable(bodies)
.flatMap(body -> send(body).onErrorResume(e -> Mono.empty()))
.collectList();
}

private Mono<Response> send(Object body)
{
return WEB_CLIENT.post().syncBody(body).retrieve().bodyToMono(Response.class);
}

关于java - 如何使用 Spring WebClient 收集并行 Web 请求的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57494441/

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