我想设置一些“标志”(我想到了标头),该标志表示发生了异常,然后在路由的末尾使用它在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),然后流程返回到路由,因此您将看到所需的日志消息。

10-08 00:20