Apache Camel - Как поймать исключение с помощью Multicast? - PullRequest
0 голосов
/ 03 июля 2018

В моем приложении есть основной маршрут, который называется MAIN_ROUTE. Я реализовал шаблон многоадресной передачи в под-маршруте (называемый SOME_ROUTE), чтобы вызывать некоторые другие конечные точки последовательно, индивидуально.

Вот основной код маршрута:

onException(Exception.class)
    //Do some stuff here
    .end();

from(MAIN_ROUTE)
    //do some stuff, no specific config
    .to(SUB_ROUTE)
    .end();

Вот код вызываемого маршрута:

from(SUB_ROUTE)
        .routeId(SUB_ROUTE)
        .streamCaching()
        .log(LoggingLevel.INFO, log, "ExchangeId : $simple{id} - Start route")
        .errorHandler(noErrorHandler())
            //We use a multicast because we need to call initialization route and we don't care about the exchange body of that route
        .multicast()
            .stopOnException()
            .to(SOME_ENDPOINT_1, SOME_ENDPOINT_2)
        .end()
    .end();

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

Кто-нибудь знает, как это сделать?

Спасибо

1 Ответ

0 голосов
/ 13 июля 2018

У вас есть атрибут «shareUnitOfWork» (по умолчанию false) в шаблоне многоадресной рассылки. В основном: если он включен, ваш основной Camel Exchange использует тот же рабочий контекст, что и созданные вспомогательные биржи; в частности, любое исключение, происходящее внутри многоадресной рассылки, будет распространено на родительский обмен.

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