Мост пересылки 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.

Другие вопросы по тегам