уточнение области действия обработчика ошибок apache-camel - PullRequest
0 голосов
/ 07 марта 2012

Ниже приведен пример маршрута из книги «Верблюд в действии». В области контекста есть один обработчик ошибок и два определения маршрута. Мои вопросы

  1. Правильно ли говорить, что обработчик ошибок уровня контекста применим только для маршрута 1?
  2. Срабатывает ли обработчик ошибок мертвых букв для любых исключений, вызванных любым из шагов в маршруте 2. То есть из orderService.validate() и orderService.enrich().
  3. Что, если я хочу использовать другой обработчик ошибок для исключений, которые возникают из методов validate() и enrich()?

    // обработчик ошибок контекста контекста

    errorHandler(defaultErrorHandler()
        .maximumRedeliveries(2)
        .redeliveryDelay(1000)
        .retryAttemptedLogLevel(LoggingLevel.WARN));
    
    //Route 1
    
    from("file://target/orders?delay=10000")
        .beanRef("orderService", "toCsv")
        .to("mock:file")
        .to("seda:queue.inbox");
    
    //Route 2 with route scope error handler
    
    from("seda:queue.inbox")
        .errorHandler(deadLetterChannel("log:DLC")
        .maximumRedeliveries(5).retryAttemptedLogLevel(LoggingLevel.INFO)
        .redeliveryDelay(250).backOffMultiplier(2))
        .beanRef("orderService", "validate")
        .beanRef("orderService", "enrich")
        .to("mock:queue.order");
    

1 Ответ

1 голос
/ 07 марта 2012

Ваши предположения о # 1 и # 2 верны ...

для # 3, либо определите Исключительные предложения , чтобы отловить явные исключения, создаваемые вашими методами бина (OrderValidateException, EnrichException,и т. д.) или используйте встроенные блоки try-catch вокруг каждого шага вашего маршрута (я предпочитаю первый подход самостоятельно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...