我想设置一些“标志”(我想到了标头),该标志表示发生了异常,然后在路由的末尾使用它在2种情况下记录一些信息:
-当也不例外
-发生异常时
我尝试在“ onException”中设置标头,但在路由末尾不可见。
onException(SomeException.class)
.process(someExceptionProcessor)
.handled(true)
.end();
from(someSource)
.split(body())
.inOnly(someQueue)
.end()
.choice()
.when(header("CamelSplitComplete").isEqualTo("true")) // here I would like to add something like "and(header("exceptionOccurred").isEqualTo("true"))"
.log("Completed without issues")
.otherwise()
.log("Some issue occurred")
.end();
最佳答案
它不可见,因为在onException
部分中有handled(true)
。这意味着如果引发当前的Exception,则路由中断,并且执行将在onException部分发生,并且不会返回到初始路由。这就是为什么您看不到日志消息的原因。
尝试continue(true)
。使用此选项,如果引发了异常,则流程将转到onException部分。在这里,您可以创建标志(setHeader
),然后流程返回到路由,因此您将看到所需的日志消息。