2016-07-24 4 views
0

Предположим, что у меня есть 10 различных маршрутов верблюдов в моем приложении, возможно ли остановить один конкретный маршрут во время проблемы и внести изменения в него (в одном из java-процессоров) и развернуть его снова, не затрагивая другие маршруты.Развертывание маршрута Apache для верблюдов - независимо?

Также я могу создать и развернуть новый маршрут «на лету», в то время как другие маршруты уже функционируют.

Если это не поведение по умолчанию, каковы доступные для этого варианты?

+0

Оформить заказ hawtio: http: //hawt.io Он подходит, как перчатка для меня для этой работы. –

ответ

1

Karaf (так же, как и Apache ServiceMix/JBoss Fuse) имеет горячее развертывание (в настоящее время это может поддерживаться и в JBoss AS/WildFly). Смысл, вы можете создать свои маршруты в виде независимых файлов xml-файла в папке развертывания (что означает просто xmls). Аналогично, вы можете иметь xml-файлы для каждого маршрута, всякий раз, когда вы вносите изменения в XML, он будет автоматически перераспределен.

Этот подход имеет несколько недостатков, он будет сложным, если вам нужно иметь дело с JPA или если ваш маршрут должен иметь дело с пользовательскими процессорами/классами.

Ознакомьтесь с примерами в проекте Apache ServiceMix/JBoss Fuse.

Я бы рекомендовал этот подход, особенно если вы хотите использовать подход к микроконтейнеру - что-то вроде легкого веса Apache Karaf + Camel Route XML files + Docker.

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

+1

Большое спасибо за ответ @gnanagurus. Как вы сказали, обработка пользовательских процессоров/классов будет сложной - разве это невозможно? или может быть достигнуто с помощью нескольких более сложных шагов? –

0

Вы можете остановить маршрут через org.apache.camel.CamelContext.stopRoute (id) &, вы можете изменить его, построив новый маршрут и добавив его в контекст. Это позволит вам изменить логику маршрута во время выполнения.

Это не позволит автоматически развернуть новый Java-процессор. Я думаю, что этот аспект вашего вопроса не специфичен для Camel - их, кажется, несколько вариантов для этого, в том числе OSGi/Karaf, упомянутых @gnanaguru.

Возможно, вы перейдете к логике, которая, по вашему мнению, может измениться с процессора Java до более динамичного (например, JavaScript во внешнем файле или в самом маршруте), будет более простым решением вашей проблемы.