Active MQ Ожидающие сообщения о сбое в архитектуре Master Slave - PullRequest
0 голосов
/ 29 июня 2018

Фон:

У нас есть конфигурация 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: Часто ли происходит переключение при сбое довольно часто? Почему они случаются?
    • Все новые сообщения потребляются без проблем.

Спасибо всем заранее за ваши ценные предложения.

1 Ответ

0 голосов
/ 29 июня 2018

Похоже, вы хотите лучшую гарантию доставки, чем прямые темы. Либо пользуйтесь постоянным подписчиком, либо обращайтесь к виртуальным темам (производите по теме, потребляйте из очереди). Это улучшит поведение транзакций (откат сообщений при потреблении), и очереди будут иметь лучшую гарантию заказа, чем темы без постоянного подписчика.

ref Виртуальные темы

...