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
运算符提供另一个发布者。
我正在使用项目反应堆,我有一个很长的流程,我在其中遇到异常(当使用 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
运算符提供另一个发布者。