所以,我有一个骆驼上下文,DeadLetterChannel
在上下文级别没有重新传递。在上下文中,我有一条路线:
from("direct:input")
.routeId("enrichHeader")
.setHeader("myHeader").constant("someValue)
.to("direct:output");
我有一个单元测试,我会在其中interceptSendToEndpoint("direct:output")
引发异常。
然后在单元测试中我做producerTemplate.sendBody(theBody)
。
现在,如上面配置的异常消息被发送到死信通道。一切都好。但是,如果我配置 aloggingErrorHandler
我会得到奇怪的行为。因此,如果我将上述路线更新如下:
from("direct:input")
.routeId("enrichHeader")
.errorHandler(
loggingErrorHandler("com.myco.myproject")
.level(LoggingLevel.WARN))
.setHeader("myHeader").constant("someValue)
.to("direct:output");
当我现在运行测试时,我得到了两个意想不到的行为。首先,异常仍然记录在 levelERROR
而不是配置的WARN
. 其次,异常被传播回producerTemplate.sendBody(theBody)
调用。
一方面,日志记录ERROR
显然很奇怪。另一个看起来很奇怪的部分是处理程序正在传播异常。我原以为它会将其标记为已处理并完成。
这是预期的行为吗?似乎LoggingErrorHandler
缺少文档。