Фон:
У нас есть конфигурация master (AMQ1) / slave (AMQ2) для активного MQ.
У нас есть несколько приложений, развернутых с использованием аварийного переключения, при этом некоторые приложения будут публиковать / потреблять, а некоторые приложения будут потреблять / публиковать сообщения JSM.
Из них у нас есть одно ПРИЛОЖЕНИЕ1, которое публикует сообщения (скажем, 1000) каждые 30 секунд (у нас есть триггер для извлечения записей из БД и публикации и обновления статуса записи БД ОДИН ПО ОДНОМУ) в ТЕМУ А.
Другое ПРИЛОЖЕНИЕ2, имеющее потребителя в ТЕМЕ А, потребляет и хранит в другой базе данных ОДИН ПО ОДНОМУ.
отказоустойчивого: (ТСР: // AMQ1: 61616, TCP: // AMQ2: 61616)? Jms.prefetchPolicy.queuePrefetch = 1 & таймаут = 5000
Технические детали: Приложения разрабатываются с
- Менеджер транзакций как битроникс, чтобы убедиться, что 2PC позаботился.
- Spring Boot application 1.3.X
- Активный MQ 5.14.X
- Camel версии 2.16.X, приложение использует конфигурацию java, и мы создаем Camel JmsComponent (верблюжьи маршруты) с Pooled Connection Factory.
Проблемы:
Когда приложение APPLICATION2 развернуто, оно создает потребителя для AMQ, скажем, ID_Cosnumer-1001. Когда APPLICATION1 публикует сообщения, APPLICATION2 использует и 2PC работает нормально, мы не теряем никаких сообщений и не видим дублирующих сообщений.
Проблемы начинаются, когда происходит аварийное переключение на AMQ Master-AMQ1, когда происходит аварийное переключение, AMQ2 становится главным, а AMQ1 становится подчиненным. Во время этого процесса для APPLICATION2 создается другой потребитель с ID_Cosnumer-2002, а ID_Cosnumer-1001 не уничтожается. Оба видны в потребительском разделе браузера AMQ.
- Проблема 1: Из-за этого некоторые сообщения в полете находятся в состоянии ожидания (вероятно, связаны с ID_Cosnumer-1001) и не используются APPLICATION2, и мы пропускаем эти транзакции, как это преодолеть проблема?
- Проблема 2: Случайно, может быть, когда снова происходит аварийное переключение (при переключении мастеров), эти сообщения используются. Из-за этого сообщения находятся в неработоспособном состоянии.
- Проблема 3: Часто ли происходит переключение при сбое довольно часто? Почему они случаются?
- Все новые сообщения потребляются без проблем.
Спасибо всем заранее за ваши ценные предложения.