В настоящее время у нас есть четыре контейнера слушателя JMS, которые запускаются во время запуска приложения.Все они подключаются через Apache ZooKeeper и запускаются вручную.Это становится проблематичным, когда невозможно установить соединение с ZooKeeper.Приложение (Wicket) не может запуститься, даже если прослушивателям JMS не нужно активно использовать приложение.Им просто нужно прослушивать сообщения в фоновом режиме, сохранять их, и задание cron будет обрабатывать их партиями.
Цели :
- Разрешить приложениюзапускать и не препятствовать тому, чтобы контейнеры сообщений не могли подключиться.
- После запуска приложения запустите прослушиватели сообщений.
- Если подключение к одному или любому из прослушивателей сообщений оборвется, он должен попытаться автоматически переподключиться.
- При завершении работы приложения (например, при закрытии Tomcat) приложение должно остановить прослушиватели сообщений и задание cron, которое обрабатывает сохраненные сообщения.
- Makeвсе это тестируемое (например, возможность писать интеграционные тесты для этой установки).
Текущая настройка :
- Spring Boot 1.5.6
- Apache ZooKeeper 3.4.6
- Apache ActiveMQ 5.7
- Калитка 7.7.0
Работа, проделанная до настоящего времени :
- Определите класс, которыйреализует
ApplicationListener<ApplicationReadyEvent>
. - Установка для свойства
autoStart
DefaultMessageListenerContainer
значения false и запуск каждого контейнера в onApplicationEvent
в отдельном потоке.
Вопросы :
- Необходимо ли запускать каждый контейнер сообщений в отдельном потоке?Это кажется излишним, но способ «запуска» процесса заключается в том, что DefaultMessageListenerContainer создается для этого слушателя, а затем запускается.Существует компонент пользовательского интерфейса, который пользователь может использовать для запуска / остановки прослушивателей сообщений, если это необходимо, и если они запускаются последовательно в одном потоке, то последние три контейнера сообщений могут быть нулевыми, если первый еще не подключился при запуске.
- Как мне достичь целей 4 и 5?
Конечно, любые замечания о том, нахожусь ли я на правильном пути, были бы полезны.