Project Reactor onErrorResume 卡住了

Project Reactor onErrorResume get stuck

我正在使用项目反应堆,我有一个很长的流程,我在其中遇到异常(当使用 Jackson 将字符串解析为 json 时)。问题是即使我使用

.map(this::parser)
.onErrorResume(err -> {
   log.error(myMsg);
   return Mono.empty();
})
.flatMap(writeToPulsar)
.subscribe()

流程不会继续。我确实看到了错误日志,流程没有抛出异常,但流程不会继续执行。发生这种情况的原因是什么?

当我将代码更改为(不需要的).onErrorContinue() 时,数据管道不会停止:

.map(this::parser)
.onErrorContinue((err, msg) -> {
   log.error(myMsg);
})
.flatMap(writeToPulsar)
.subscribe()

作为错误处理的一部分,您正在 returning Mono.empty(),这意味着您的流程将在不发出任何结果的情况下完成,并且 flatMap 将不会执行。

不确定预期的行为,但如果您想继续流程 - return 来自 onErrorResume 的一些“默认”值,或者使用 switchIfEmpty 运算符提供另一个发布者。