SpringWebFlux doOnError处理

时间:2019-05-31 12:59:44

标签: java reactive-programming spring-webflux

在我们的项目中,如果发生不良情况,我们会进行某种后备,并由 doOnError 处理。我唯一担心的是,可能未正确使用 doOnError 运算符。因此,让我们看下一个示例:

callService1()
.flatMap(service1Response -> {
  //process service1Response
})
.doOnError(callService2.subscribe())

当流到达doOnError时,我们正在调用另一个服务。

在doOnError中,我们必须手动预订到由 callService2 检索的Mono,以便执行代码,此外,如果在doOnError中引发错误, ,我们的GlobalErrorHandler不会捕获该错误。

在这种情况下,我们应该重新考虑错误处理吗?我真的不想手动订阅发布者。你怎么看 ?提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果发生错误,可以使用onErrorResume运算符返回另一个Mono。有关其他相关运算符,请参见reactor operator guide

callService1()
.flatMap(service1Response -> {
  //process service1Response
})
.onErrorResume(err -> callService2())