【问题标题】:SpringWebFlux doOnError handlingSpring WebFlux doOnError 处理
【发布时间】:2019-05-31 12:59:44
【问题描述】:

在我们的项目中,我们有某种回退,以防发生不好的事情,并由 doOnError 处理。我唯一担心的是 doOnError 运算符可能没有以正确的方式使用。那么让我们看下一个例子:

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

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

在 doOnError 中,我们必须手动 订阅 到由 callService2 检索到的 Mono 以便执行代码,除此之外,如果在 doOnError 中抛出错误,这个错误不会被我们的 GlobalErrorHandler 捕获。

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

【问题讨论】:

    标签: java reactive-programming spring-webflux


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 2021-05-02
      • 2019-03-11
      • 2021-08-06
      • 2018-07-05
      • 2021-11-12
      • 2021-12-29
      • 2019-12-04
      • 1970-01-01
      相关资源
      最近更新 更多