#java #client #design-patterns #failover
#java #клиент #шаблоны проектирования #отработка отказа
Вопрос:
Мы разрабатываем Java-клиент (будет развернут на Tomcat, Windows 2008 R2), которому необходимо подписаться на некоторые разделы JMS в Sonic MQ.
Клиент хочет иметь избыточность для этого Java-клиента, и в любой момент времени только один подписчик должен быть подписан на темы.
Наше требование аналогично этому сообщению.
Существует ли какой-либо стандартизированный проект с открытым исходным кодом, созданный для этой цели, или мы должны написать собственный код для проверки работоспособности сервера (отнимает много времени)? Каков наилучший способ реализации этого Java-клиента.
Мы изучаем следующие технологии для использования сообщений JMS:
- Интеграция с Spring
- Apache Camel
Мы движемся в правильном направлении? Мы должны иметь возможность запускать / останавливать подписки на темы на лету.
Ответ №1:
У Apache Camel есть что-то подобное из коробки, проверьте это. Он реализует шаблон балансировки нагрузки EAI. Вы можете выбрать политику «отработки отказа». похоже, использует Exception, чтобы решить, какой процессор использовать следующим.
Другим способом может быть реализация простых пользовательских сигналов на основе jms среди подписчиков, чтобы отслеживать работоспособность друг друга и балансировать нагрузку или переход на другой ресурс. Каждый подписчик может отслеживать, что он должен обрабатывать. Например, по предоставленной вами ссылке каждый подписчик знает тему, которую он прослушивает, и продолжает получать сердцебиение от другого подписчика в случае сбоя сердцебиения, прослушиватель отработки отказа начнет принимать сообщения для неудачного прослушивателя. Я думаю, вы можете использовать селектор сообщений JMS для реализации фильтров. Хорошей ссылкой для начала может быть эта старая статья о Javaworld .