Мост пересылки ActiveMQ с аварийным переключением
Вот что я пытаюсь достичь с ActiveMQ: я хотел бы иметь 2 кластера брокеров: clusterA и clusterB. Данные между этими 2 кластерами должны быть отражены. Таким образом, когда clusterA получает сообщение, оно будет сохранено в storageA, а также это сообщение должно быть передано в clusterB (если есть такая потребность) и сохранено в storageB. С другой стороны, если clusterB получает сообщение, его следует переслать в clusterA. Мне интересно, считается ли этот конфиг действительным в соответствии с описанным выше:
<networkConnectors>
<networkConnector
uri="static:(failover(tcp://clusterB_broker1:port,tcp://clusterB_broker2:port,tcp://clusterB_broker3:port))"
name="bridge"
duplex="true"
conduitSubscriptions="true"
decreaseNetworkConsumerPriority="false"/>
</networkConnectors>
1 ответ
Это действительная конфигурация. Это указывает (при условии, что все брокеры ClusterA настроены таким образом), что брокеры в ClusterA будут сохранять и пересылать сначала clusterB_broker1
и, если он не работает, он будет хранить и пересылать clusterB_broker2
и затем clusterB_broker3
если clusterB_broker2
вниз Но в зависимости от конфигурации вашего внутрикластерного брокера, он не будет делать то, что вы хотите.
Конфигурации посредника должны быть настроены для аварийного переключения сами, иначе вы потеряете сообщения, когда clusterB_broker1
идет вниз. Если брокеры clusterB не работают вместе, как описано ниже, то когда clusterB_broker1
Все сообщения, отправленные на него, не будут присутствовать или недоступны для других брокеров clusterB. Новые сообщения будут пересылать им.
Как выполнить отработку отказа в кластере, зависит от вашей версии ActiveMQ.
Последняя версия (5.9.0) поддерживает 3 конфигурации отказоустойчивого (или главного / подчиненного) кластера. Для быстрого ознакомления они:
- Ведущий Ведомый Файловой Системы
- JDBC Master Slave
- Реплицированный Магазин LevelDB
Более ранние версии поддерживали конфигурацию master/slave, в которой был один master и один slave-узел, куда сообщения пересылались подчиненному брокеру. Эта настройка не была в хорошем состоянии, имела ошибки и была удалена из ActiveMQ.