java - 使用 webclient 同时进行多个调用:当 webClient 抛出连接异常时,未调用 Flux .doOnTerminate
问题描述
我正在尝试使用 webclient 同时进行多个调用,并发现在发生连接错误(例如“未知主机异常”)的情况下,使用以下代码可以按预期工作。在这种情况下,onErrorContinue 被异常调用,但 .doOnTerminate 或 .doOnCancel 未被调用。否则,我们无法可靠地声明为“完成”。我尝试了多种选择,但没有任何帮助。不知道为什么当 webclient 抛出连接错误时没有触发结束信号
Flux.fromIterable(Arrays.asList(users))
.subscribeOn(Schedulers.elastic(), false)
.flatMap(user -> {
try {
return makeRemoteCall(user) -> returns bodyToFlux
} catch(Exception e) {
System.out.println("webclient flatmap exception"); -> this stmt never hits
return Flux.error(e);
}
})
.onErrorContinue((throwable, o) -> {
LOG.info("{}, {}", throwable.toString(), o);
})
.doOnTerminate(() -> {
System.out.println("finished");
})
.doOnCancel(() -> {
System.out.println("finished with cancel signal");
})
.subscribe(content -> {
System.out.println("content")
});
解决方案
推荐阅读
- powerapps - Power Automate 流不会触发已存在文件的“复制到”操作
- node.js - 错误:听 EACCES:权限被拒绝 0.0.0.0:443
- dynamodb-queries - Visualize Dynamodb data (List data type) in AWS QuickSight
- javascript - React: Iframe rendering new line character \n as a single space
- c# - 连接到用于 .net 4.7.2 的 IBM Db2 有效,但在迁移到 .net core 3.1 后失败
- fastapi - 用户登录时如何获取用户对象,否则如何获取用户对象?
- qt - QLabel 不显示多位整数
- excel - 如何在 Excel 上创建一个下拉列表,用户可以单击多个选项并填充相邻的单元格,范围为 300 行?
- symfony - 将 Mercure Hub 添加到 DDEV
- docker - 容器中的分配比例如何?