java - WebFlux:Flux.reduce() 是否传播 Mono.error()?
问题描述
爪哇 11
春季启动 2.2.6
WebFlux Netty 应用程序在 WebClient REST 调用上使用 Flux.parallell 流:
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 请求的所有信息?
解决方案
推荐阅读
- python - np.lexsort 在升序和降序之间切换
- javascript - 使用 javascript 在原始页面上堆叠新元素
- azure - Azure 数据探索标记和存储
- python - 如何在 Kivy 中跨多个屏幕更新 Id 值
- google-chrome - Headless Chrome - chrome-headless-render-pdf 我想在页眉和页脚部分添加图像
- java - TestNG 错误:java.lang.NoSuchMethodError
- pyspark - WriteStream 无法在 Delta 表中写入数据
- krl - 关于 KUKA 机器人语言 (KRL) 中的 WAIT FOR 语句的奇怪错误
- c# - 在 Application.Run 之后将参数传递给窗口
- node.js - 使用 Heroku 上托管的 Nodejs 服务器创建 Google Assistant Webhook