Верблюд - обработка исключений в «подкатегориях» - PullRequest
13 голосов
/ 13 сентября 2011

Верблюд явно обрабатывает две «области» обработки ошибок:

  • Global
  • за маршрут

Проблема, с которой я сталкиваюсь, - это исключения, возникающие в «суб-маршруте». Например, у меня есть этот маршрут:

from("direct:sendToWebservice").
    .processRef("massageBeforeSending").
    .to("http://webservice.com").
    .processRef("massageResponse");

Тогда у меня есть два других маршрута, которые должны отправлять сообщения в веб-сервис:

from(direct:fromSystemA").
    .errorHandler(deadLetterChannel("direct:TellSystemA")).
    .to("direct:sendToWebservice");

from(direct:fromSystemB").
    .errorHandler(deadLetterChannel("direct:TellSystemB")).
    .to("direct:sendToWebservice");

Я хотел бы, чтобы, если маршрут веб-службы генерировал исключение, он передавался до вызывающей стороны, и система A или система B получала уведомление. Я не вижу способа достичь этого.

Я чувствую, что это было бы распространенным случаем - кто-нибудь сталкивался с этим раньше?

Еще раз спасибо за ваше время,

Рой

1 Ответ

24 голосов
/ 14 сентября 2011

Получил ответ от коллеги: для обработки маршрута необходимо отключить обработку ошибок:

from("direct:sendToWebservice").
    .errorHandler(noErrorHandler())     // disables error handling for this route
    .processRef("massageBeforeSending").
    .to("http://webservice.com").
    .processRef("massageResponse");

Это вынуждает Camel распространить ошибку на маршрут вызова.

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