Укажите порядок завершения работы контекста верблюда с несколькими контекстами

#java #spring #apache-camel

#java #весна #apache-camel

Вопрос:

У меня есть приложение Camel / Spring с несколькими контекстами (скажем, 3 — A, B amp; C). Контексты предназначены для запуска / остановки в определенном порядке. Запуск: C, B, затем A. Завершение работы A, B, затем C. Существует много документации об указании порядка завершения работы в одном контексте верблюда, но я ничего не нахожу об этом, если маршруты находятся в нескольких контекстах. DefaultShutdownStrategy Кажется, что поддерживается только один контекст.

Ответ №1:

Несколько подходов для изучения:

  1. Используйте уровни выполнения пакета в контейнере на основе Karaf, чтобы гарантировать, что завершение работы является обратным запуску

  2. Разработайте соглашение, в котором вы можете использовать шину управления Camel и иметь один «главный» маршрут, отвечающий за запуск и завершение работы. Настройте все маршруты так, чтобы они не запускались автоматически, за исключением одного «основного» маршрута. Затем этот маршрут запускает и останавливает маршруты в любом необходимом порядке.

  3. Вы упомянули Spring.. Я удивлен, что он не выполняет порядок запуска в обратном порядке при завершении работы. Как правило, Blueprint хорошо справляется с изменением порядка запуска.