在我们的项目中,如果发生不良情况,我们会进行某种后备,并由 doOnError 处理。我唯一担心的是,可能未正确使用 doOnError 运算符。因此,让我们看下一个示例:
callService1()
.flatMap(service1Response -> {
//process service1Response
})
.doOnError(callService2.subscribe())
当流到达doOnError时,我们正在调用另一个服务。
在doOnError中,我们必须手动预订到由 callService2 检索的Mono,以便执行代码,此外,如果在doOnError中引发错误, ,我们的GlobalErrorHandler不会捕获该错误。
在这种情况下,我们应该重新考虑错误处理吗?我真的不想手动订阅发布者。你怎么看 ?提前谢谢。
答案 0 :(得分:0)
如果发生错误,可以使用onErrorResume
运算符返回另一个Mono。有关其他相关运算符,请参见reactor operator guide。
callService1()
.flatMap(service1Response -> {
//process service1Response
})
.onErrorResume(err -> callService2())