В этом блоге мы увидим, как работают дуплексные сетевые разъемы .
В предыдущей части 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 |
В предыдущем сообщении в блоге мы поместили в очередь 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, на котором показано следующее:
- Q: сетевой разъем broker1-> broker2 является дуплексным.
- В настоящее время существует динамический производитель брокера-1 из брокера-2, потому что
Q: сетевой разъем broker1-> broker2 является «дуплексным».
Вот скриншот вкладки jConsole MBean broker-2, на котором показано следующее:
- Дуплексный сетевой разъем от брокера-2 к брокеру-1
- Два динамических производителя сообщений от брокера-1 до брокера-2
- Обратите внимание, что сетевой соединитель «Q: broker1-> broker2» отображается как дуплекс, как настроено в activemq.xml
Давайте посмотрим это в действии
- Производитель 100 сообщений в брокер-2
- Создайте потребителя на foo.bar на broker-1
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
1
|
Ashwinis-MacBook-Pro:example akuntamukkala$ ant consumer -Durl=tcp: //localhost :61616 -Dtopic= false -Dsubject=foo.bar |
На следующем снимке экрана с брокера-2 показано, что все 100 сообщений были заблокированы потребителем (динамически перенаправляются на брокер-1).
HTTP: // локальный: 9161 / администратор / queues.jsp
На следующем снимке экрана показаны детали этого динамического потребителя в очереди foo.bar брокера-2.
HTTP: // локальный: 9161 / администратор / queueConsumers.jsp JMSDestination = foo.bar
На следующем снимке экрана показано, что 100 сообщений, которые были динамически перемещены из очереди foo.bar брокера-2 в очередь foo.bar брокера-1, были успешно использованы получателем, который мы создали на шаге # 2
На этом завершается вторая часть этой серии, в которой мы увидели, как работают дуплексные сетевые разъемы.
Как всегда ваши комментарии очень приветствуются.
Оставайтесь с нами для части 3, где мы рассмотрим балансировку нагрузки у локальных / удаленных брокеров…
Ссылка: | ActiveMQ — Объяснение сети брокеров — часть 2 от нашего партнера по JCG Ашвини Кунтамуккала в |