2015-12-21 3 views
1

У меня странное поведение с блоком onException.Camel onException поведение с Splitter

Если я установил обработанное значение false, то журнал НЕКОТОРЫХ СООБЩЕНИЙ не печатается, но если я изменил обработанное значение на true - все будет зарегистрировано. Может кто-нибудь объяснить, что происходит? Насколько я понимаю, журнал должен быть напечатан в обоих случаях.

<camelContext ..> 
    <onException> 
     <exception>java.lang.Exception</exception> 
     <handled> 
      <constant>false</constant> 
     </handled> 
     <log message="SOME MESSAGE"/> 
    </onException> 

    <route> 
     <from uri="timer://foo?repeatCount=1"/> 

     <!-- Put a list with some values as a body --> 
     <to uri="bean:utils?method=setBody"/> 

     <split shareUnitOfWork="true" stopOnException="true"> 
      <simple>${body}</simple> 

      <to uri="direct:handleSplit"/> 
     </split> 
    </route> 

    <route> 
     <from uri="direct:handleSplit"/> 
     <throwException ref="myException"/> 
    </route> 
</camelContext> 

ответ

0

Это похоже на ошибку верблюда для меня. DSL версия Java вашего кода не демонстрирует это странное поведение:

 onException().handled(false).log(LoggingLevel.INFO, "SOME MESSAGE"); 
     from("timer://foo?repeatCount=1") 
       .to("bean:utils?method=setBody") 
       .split() 
       .body() 
       .throwException(new RuntimeException()); 

LogProcessor называется то, что значение «обрабатывается» здесь.

Переключитесь на DSL Java или заполните отчет об ошибке.

+0

Если вы запустили версию Java DSL с опцией shareUnitOfWork, то поведение будет таким же. –

Смежные вопросы