Статьи

ActiveMQ — объяснена сеть брокеров (часть вторая)


В этом блоге мы увидим, как 
 работают
дуплексные сетевые разъемы .

В предыдущей 
части 1  мы создали сетевой коннектор от broker-1 и broker-2. Мы смогли увидеть, как сообщения для очереди «foo.bar» на broker-1 переадресовывались в очередь «foo.bar» на broker-2, когда был получатель на broker-2 для очереди «foo.bar»

Давайте попробуем сделать обратное, производя сообщения в очередь broker-2 foo.bar и потребляя из очереди broker-1 «foo.bar»
Ashwinis-MacBook-Pro:example akuntamukkala$ ant producer -Durl=tcp://localhost:61626 -Dtopic=false -Ddurable=true -Dsubject=foo.bar -Dmax=100

Ashwinis-MacBook-Pro:example akuntamukkala$ ant consumer -Durl=tcp://localhost:61616 -Dtopic=false -Dsubject=foo.bar

В предыдущем сообщении в блоге мы поместили в очередь 100 сообщений в очереди.
Следовательно, #meagesages в очереди теперь показывает как 200 здесь. 

Как показано выше, 100 новых сообщений помещаются в очередь в очереди foo.bar на broker-2, но нет потребителей, хотя есть сетевой соединитель для всех очередей от broker-1 до broker-2. 
Причина заключается в том, что сетевой соединитель, если он не указан как «дуплекс», является однонаправленным от источника к посреднику назначения. 

Давайте изменим следующий атрибут, выделенный желтым цветом в /Users/akuntamukkala/apache-activemq-5.8.0/bridge-demo/broker-1/conf/activemq.xml файл конфигурации для broker-1.
     <networkConnectors>
         <networkConnector 
            name="T:broker1->broker2" 
            uri="static:(tcp://localhost:61626)" 
            duplex="false" 
            decreaseNetworkConsumerPriority="true" 
            networkTTL="2" 
            dynamicOnly="true">
            <excludedDestinations>
                  <queue physicalName=">" />
            </excludedDestinations>
         </networkConnector>
         <networkConnector 
            name="Q:broker1->broker2" 
            uri="static:(tcp://localhost:61626)" 
            duplex="true" 
            decreaseNetworkConsumerPriority="true" 
            networkTTL="2" 
            dynamicOnly="true">
            <excludedDestinations>
                  <topic physicalName=">" />
            </excludedDestinations>
         </networkConnector>
     </networkConnectors>

Давайте перезапустим брокеров и подключимся к брокерам с помощью jConsole.

Вот скриншот вкладки jConsole MBean broker-1, на котором показано следующее:
  1. Q: сетевой разъем broker1-> broker2 является дуплексным.
  2. Теперь в broker-1 существует динамический производитель из broker-2, поскольку
    сетевой соединитель Q: broker1-> broker2 является «дуплексным».

Вот скриншот вкладки jConsole MBean broker-2, на котором показано следующее:
  1. Дуплексный сетевой разъем от брокера-2 к брокеру-1
  2. Два динамических производителя сообщений от брокера-1 до брокера-2
    1. Обратите внимание, что сетевой соединитель «Q: broker1-> broker2» отображается как дуплекс, настроенный в файле activemq.xml. 

Давайте посмотрим это в действии

  1. Производитель 100 сообщений в брокер-2
Ashwinis-MacBook-Pro:example akuntamukkala$ ant producer -Durl=tcp://localhost:61626 -Dtopic=false -Ddurable=true -Dsubject=foo.bar -Dmax=100

Снимок экрана с очередями в брокере-2: http: // localhost: 9161 / admin / queues.jsp

    2. Создайте потребителя на foo.bar на брокере-1
Ashwinis-MacBook-Pro:example akuntamukkala$ ant consumer -Durl=tcp://localhost:61616 -Dtopic=false -Dsubject=foo.bar
The following screenshot from broker-2 shows that all the 100 messages have been dequeued by a consumer (dynamically forwarded to broker-1).

http://localhost:9161/admin/queues.jsp
The following screenshot shows the details of this dynamic consumer on broker-2’s foo.bar queue.
http://localhost:9161/admin/queueConsumers.jsp?JMSDestination=foo.bar

The following screenshot shows that the 100 messages which were dynamically moved from broker-2’s foo.bar queue to broker-1’s foo.bar queue have been successfully consumed by the consumer which we created in step #2
This concludes part 2 of this series where we saw how duplex network connectors work. 
As always your comments are very welcome. 
Stay tuned for part 3 where we will go over load balancing consumers on local/remote brokers…