2016-05-09 1 views
0

Я использую пользователя kafka, настроенного на Camel DSL, для прослушивания темы Kafka. Существует еще одно приложение (сервер), где kafka настроен и который создает данные по этой теме.Как справиться с запуском исключения и повторного запуска в Camel DSL при запуске конечных точек

<camel:endpoint id='docInfo' uri='kafka:${camel.kafka_broker}? topic=${camel.kafka_topic}&zookeeperConnect=${camel.kafka_zookeeper}&groupId=${k afka_groupId}&clientId=${camel.kafka_host}&consumerStreams=${camel.kafka_threads }' /> 
    <!-- The camel route to consume the message --> 
    <camel:route id="consumeDocInfoFromKafka" autoStartup="false"> 
    <camel:from uri='ref:docInfo' /> 
    </camel:route> 

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

+0

У меня есть еще одно сомнение: если я вызываю эту функцию, чтобы получить маршрут из моего потока (чтобы начать маршрут) camelContext.getRoute ("consumeDocInfo"); это вернет null в течение нескольких секунд, даже если контекст уже вставлен, но через несколько секунд он возвращает мне маршрут. Есть ли какая-то конкретная причина, по которой требуется время для инициализации или чего-то еще? – Prashant

ответ

2

Вы не сможете уловить проблемы с подключением в самом маршруте. Это проблема с загрузкой. Тем не менее, вы можете использовать Java DSL или активатор пакетов для подключения маршрута, а затем поймать любые проблемы во время запуска маршрута.

Отменить второе примечание: маршруты запускаются в отдельном потоке (они должны быть предназначены для обработки приема/потребления). Задержка запуска может быть впервые подключена к этим банкам в JVM или конкретной инициализации конечной точки потребителя (в данном случае клиентская библиотека Kafka, подключающаяся к серверу Kafka). Сам Camel очень легкий и не имеет тяжелых процессов при инициализации контекстов и маршрутов.