2014-12-16 1 views
0

Я хотел бы использовать OnException & OnComplition вместе в один маршрут (версия Camel 2.10.0.redhat-60024):OnException и onCompletion вместе в пути RouteBuilder`s

from("direct:camelTestEndpoint"). 
      onCompletion(). 
       log("onCompletion1"). 
       log("onCompletion2"). 
       log("onCompletion3"). 
      end(). 
      onException(Throwable.class). 
       handled(true). 
       log("onException"). 
      end(). 

      log("route") 
      .throwException(new RuntimeException()); 

Хотя это не работает, как я ожидать. Исключение в основном маршруте приводит к тому, что маршрут onComplition останавливается после первого процессора (он обрабатывается в методе continueProcessing() PipelineHelper`s). Верблюд проверяет, было ли обработано исключение, а если да - прекращает обработку.

Выход:

route 
onException 
onCompletion1 

Есть ли у меня нежный способ сказать верблюд, что он должен пропустить эту (без «CamelErrorHandlerHandled» удаление собственности)?

Благодаря

+0

Какую версию Camel вы используете? –

+0

Привет, Клаус. Извини, я виноват. 2.10.0.redhat-60024 – Yamahar1sp

ответ

1

Это ошибка в этой версии Camel.

Это было исправлено CAMEL-7707.

В качестве обходного вам нужно будет вручную удалить эти детали из обмена, в первом процессе в onCompletion вы делаете.

Например, что-то вроде

// must remember some properties which we cannot use during onCompletion processing 
    // as otherwise we may cause issues 
    Object stop = exchange.removeProperty(Exchange.ROUTE_STOP); 
    Object failureHandled = exchange.removeProperty(Exchange.FAILURE_HANDLED); 
    Object caught = exchange.removeProperty(Exchange.EXCEPTION_CAUGHT); 
    Object errorhandlerHandled = exchange.removeProperty(Exchange.ERRORHANDLER_HANDLED); 
+0

Опасения были оправданы :) Да, я удаляю «CamelErrorHandlerHandled», и он работает (я не забочусь о сбоях, не использую остановку маршрута и не получаю исключения). Claus, спасибо за отличную поддержку продукта, которую вы предоставляете. – Yamahar1sp

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