java - 流中出现故障时如何重新连接?
问题描述
我有一个看起来像这样的代码
@PostConstruct
public void setUpStreamer() {
WebClient.create(daemonEndpoint)
.get()
.uri("/events)
.retrieve()
.bodyToFlux(String.class)
.flatMap(Mono::justOrEmpty)
.map(s -> {
try {
return mapper.readValue(s, Map.class);
} catch (IOException e) {
log.warn("unable to parse {} as JSON", s);
return null;
}
})
.flatMap(Mono::justOrEmpty)
.subscribe(
events -> {
log.info("service event(s) detected");
},
throwable -> log.error("Error on event stream: {}", throwable.getMessage(), throwable),
() -> log.warn("event stream completed")
);
}
我想要做的是流失败,基本上事件端点决定断开或重新启动,流媒体将再次重新创建。
像这样的东西
throwable -> {
log.error("Error on event stream: {}", throwable.getMessage(), throwable);
setUpStreamer();
},
() -> {
log.warn("event stream completed");
setUpStreamer();
}
这是做到这一点的唯一方法,还是有一些更好的注释或运算符可以为我完成工作?
解决方案
推荐阅读
- python - 带有 color_mode 的 keras ImageDataGenerator.flow
- c# - 上传excel文件并更新相同的记录asp.net
- reactjs - 如何在 Create React App 中删除死代码
- javascript - 在 JavaScript 中洗牌数组的更有效方法是什么?
- android - 将位图传递给 Kotlin 中的另一个 Activity
- git - 个人 git repo & .gitignore 文件
- swift - Swift Core Data 获取数据 1 列
- c# - 从视图模型更改 Xamarin 表单应用程序页面
- otrs - 在 OTRS 工单视图中添加列
- laravel - 使用 babel 和 laravel-mix 将 ES6 转换为 ES2015