问题描述
Java 11
Spring Boot 2.2.6
在WebClient REST调用上使用Flux.parallell流的WebFlux Netty应用程序:
private Mono<MySingleResponse> sendDocument(Document doc) {
return documentWebClient
.post()
.uri("/upload")
.contentType(MediaType.APPLICATION_JSON)
.bodyValue(doc)
.retrieve()
.onStatus(HttpStatus::isError,clientResponse -> Mono.error(new MyServerException()))
.bodyToMono(MySingleResponse.class);
}
设置在链上:
.then(doStuff())
.then(Flux.fromIterable(documents)
.parallel()
.runOn(Schedulers.elastic())
.flatMap(document -> sendDocument(document))
.sequential()
.reduce(new MyCompleteResponse(),myReduce()))
.then(doOtherStuff());
}
减少了丝毫:
BiFunction<MyCompleteResponse,MySingleResponse,MyCompleteResponse > myReduce () {
return (o2,o1) -> {
List< MySingleResponse> singleResponses = new ArrayList<>(o2.getSingleResponses());
responses.add(o1);
return new MyCompleteResponse(singleResponses);
};
}
如果WebClient收到错误响应,则reduce崩溃是使用Mono.error()响应还是收集所有响应?
换句话说:我是否会丢失有关其他REST请求的所有信息?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)