Статьи

ActiveMQ — Объяснение сети брокеров — часть 2

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

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

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

1
Ashwinis-MacBook-Pro:example akuntamukkala$ ant producer -Durl=tcp://localhost:61626 -Dtopic=false -Ddurable=true -Dsubject=foo.bar -Dmax=100
1
Ashwinis-MacBook-Pro:example akuntamukkala$ ant consumer -Durl=tcp://localhost:61616 -Dtopic=false -Dsubject=foo.bar

брокерско-2-100-сообщ-Епдиеие

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

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

Причина в том, что сетевой соединитель, если он не указан как «дуплекс», является однонаправленным от источника к брокеру назначения.

Давайте изменим следующий атрибут, выделенный желтым цветом в

1
/Users/akuntamukkala/apache-activemq- 5.8.0/bridge-demo/broker-1/conf/activemq.xml

файл конфигурации для брокера-1.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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. В настоящее время существует динамический производитель брокера-1 из брокера-2, потому что
    Q: сетевой разъем broker1-> broker2 является «дуплексным».

брокер-1-JConsole

Вот скриншот вкладки jConsole MBean broker-2, на котором показано следующее:

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

брокер-2-JConsole

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

  1. Производитель 100 сообщений в брокер-2
  2. 1
    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-дуплекс-noconsumers

  3. Создайте потребителя на foo.bar на broker-1
  4. 1
    Ashwinis-MacBook-Pro:example akuntamukkala$ ant consumer -Durl=tcp://localhost:61616 -Dtopic=false -Dsubject=foo.bar

    На следующем снимке экрана с брокера-2 показано, что все 100 сообщений были заблокированы потребителем (динамически перенаправляются на брокер-1).

    HTTP: // локальный: 9161 / администратор / queues.jsp

    брокер-2-дуплекс-сообщ-из очереди

    На следующем снимке экрана показаны детали этого динамического потребителя в очереди foo.bar брокера-2.

    HTTP: // локальный: 9161 / администратор / queueConsumers.jsp JMSDestination = foo.bar

    брокер-2-дуплекс-dynamicconsumer

    На следующем снимке экрана показано, что 100 сообщений, которые были динамически перемещены из очереди foo.bar брокера-2 в очередь foo.bar брокера-1, были успешно использованы получателем, который мы создали на шаге # 2

    брокер-1-дуплекс-сообщ-потребляются

    На этом завершается вторая часть этой серии, в которой мы увидели, как работают дуплексные сетевые разъемы.

    Как всегда ваши комментарии очень приветствуются.

    Оставайтесь с нами для части 3, где мы рассмотрим балансировку нагрузки у локальных / удаленных брокеров…

    Ссылка: ActiveMQ — Объяснение сети брокеров — часть 2 от нашего партнера по JCG Ашвини Кунтамуккала в