activemq网络桥接_ActiveMQ –经纪人网络解释–第4部分

activemq网络桥接

在前面的第3部分中 ,我们已经看到ActiveMQ如何帮助将远程使用者与本地使用者区分开来,这有助于确定从消息生产者到使用者的较短路径。

在第4部分中,我们将研究如何在远程代理上负载均衡并发使用者。

让我们考虑一些高级配置,以平衡远程代理中队列上的并发消息使用者,如下所示。

part-4-lb-rcc-新页面(4)
第四部分–经纪人网络

在以上配置中,我们有一个消息生成器,将消息发送到Broker-1上的队列moo.bar中。 Broker-1建立到Broker-2和Broker-3的网络连接器。 消费者C1使用来自代理2上队列moo.bar的消息,而消费者C2和C3是代理3上队列moo.bar上的并发消费者。

让我们看看这个动作

让我们创建三个经纪人实例…

  1. Ashwinis-MacBook-Pro:bin akuntamukkala $ pwd / Users / akuntamukkala / apache-activemq-5.8.0 / bin
  2. Ashwinis-MacBook-Pro:bin akuntamukkala $。/ activemq-admin创建../cluster/broker-1
  3. Ashwinis-MacBook-Pro:bin akuntamukkala $。/ activemq-admin创建../cluster/broker-2
  4. Ashwinis-MacBook-Pro:bin akuntamukkala $。/ activemq-admin创建../cluster/broker-3
  5. 通过修改相应的conf / activemq.xml和conf / jetty.xml来修复broker-2和broker-3传输,amqp连接器和jetty http端口,如下所示:
    经纪人 Openwire端口 码头HTTP端口 AMQP端口
    经纪人1 61616 8161 5672
    经纪人2 61626 9161 5682
    经纪人3 61636 10161 5692

  6. 修复broker-1上的网络连接器,以便可以将队列中的消息动态转发给broker-2和broker-3上的使用者。 可以通过将以下XML代码段添加到broker-1的conf / activemq.xml中来完成此操作
    <networkConnectors>
        <networkConnector
    
          name="Q:broker1->broker2"
    
          uri="static:(tcp://localhost:61626)"
    
          duplex="false"
    
          decreaseNetworkConsumerPriority="true"
    
          networkTTL="2"
    
          dynamicOnly="true">
    
          <excludedDestinations>
    
             <topic physicalName=">" />
    
          </excludedDestinations>
        </networkConnector>
    <networkConnector
    
           name="Q:broker1->broker3"
    
           uri="static:(tcp://localhost:61636)"
    
           duplex="false"
    
           decreaseNetworkConsumerPriority="true"
    
           networkTTL="2"
    
           dynamicOnly="true">
    
           <excludedDestinations>
    
                <topic physicalName=">" />
    
           </excludedDestinations>
    
        </networkConnector>
    
    </networkConnectors>
  7. 启动broker-2,broker-3和broker-1。 我们可以按任何顺序启动它们。
    1. /apache-activemq-5.8.0/cluster/broker-3/bin$ ./broker-3控制台
    2. /apache-activemq-5.8.0/cluster/broker-2/bin$ ./broker-2控制台
    3. /apache-activemq-5.8.0/cluster/broker-1/bin$ ./broker-1控制台
  8. 让我们在代理2上启动使用者C1,在代理3上启动消费者C2,在代理3上启动C3,但在称为“ moo.bar”的同一队列中
    1. /apache-activemq-5.8.0/example$ ant消费者-Durl = tcp:// localhost:61626 -Dsubject = moo.bar
    2. /apache-activemq-5.8.0/example$蚂蚁使用者-Durl = tcp:// localhost:61636 -Dsubject = moo.bar -DparallelThreads = 2

      消费者订阅由代理2和代理3转发到其相邻的代理1,代理1具有通过使用咨询消息为代理2和代理3建立的网络连接器。

  9. 让我们回顾一下代理Web控制台以查看队列和相应的使用者。
    1. 我们发现broker-2的Web控制台显示一个队列“ moo.bar”有1个使用者,broker-3的Web控制台显示一个队列“ moo.bar”有2个并发使用者
    2. 尽管有三个消费者(代理2上的C1和代理3上的C2,C3),但是代理1仅看到两个消费者(分别代表代理2和代理3)。

      part4-broker1-wc-cf
      http:// localhost:8161 / admin / queues.jsp


      part4-broker1-消费者

    3. 这是因为默认情况下,从broker-1到broker-2以及到broker-3的网络连接器都具有“ conduitSubscriptions”属性。
      由于使用了来自同一队列“ moo.bar”的消息的代理3的C2和C3被视为代理1中的一个使用方。

  10. 让我们将30条消息生成到broker-1的队列moo.bar中,并查看消息如何在使用者C1,C2和C3之间划分:
    part4-rcc-cSt
    显示消息如何从生产者传播到消费者C1,C2,C3

如上所示,即使有3个使用者和30条消息,但由于C2,C3订阅被合并到Broker-1的一个使用者中,因此他们每条消息都无法处理10条消息。

如果我们要在主题上创建订阅者,则该管道将是有用的设置,因为这样可以防止出现重复消息。 在第5部分中对此有更多的了解。

因此,为了使队列moo.bar上的C2和C3订阅传播到broker-1,让我们在broker-1的网络连接器配置中将conductorSubscriptions =“ false”设置为6之后重新执行相同的步骤6、7、8、9和10。 conf / activemq.xml。

这是Broker-1的新网络连接器配置代码段:

<networkConnectors>
  <networkConnector
    name="Q:broker1->broker2"
    uri="static:(tcp://localhost:61626)"
    duplex="false"
    decreaseNetworkConsumerPriority="true"
    networkTTL="2"
    conduitSubscriptions="false"
    dynamicOnly="true">
    <excludedDestinations>
       <topic physicalName=">" />
    </excludedDestinations>
  </networkConnector>
  <networkConnector
    name="Q:broker1->broker3"
    uri="static:(tcp://localhost:61636)"
    duplex="false"
    decreaseNetworkConsumerPriority="true"
    networkTTL="2"
    conduitSubscriptions="false"
    dynamicOnly="true">
    <excludedDestinations>
       <topic physicalName=">" />
    </excludedDestinations>
  </networkConnector>
</networkConnectors>

重新启动代理和使用者C1,C2和C3并在Broker-1的moo.bar队列中产生30条消息后,我们发现所有三个使用者订阅都在Broker-1上可见。 结果,broker-1以循环方式向每个使用者分发了10条消息,以实现负载平衡。 如下图所示。

part4-broker-1-cc
显示消息如何从生产者传播到消费者C1,C2,C3


Broker-1的Web控制台@http:// localhost:8161 / admin / queueConsumers.jsp?JMSDestination = moo.bar显示,Broker-1现在可以看到3个使用者,并向每个使用者发送10条消息。

part4-broker-1

因此,在博客系列的第4部分中,我们已经了解了如何平衡正在使用队列中消息的远程并发使用者。

一如既往地感谢您的意见和反馈!

在第5部分中,我们将探讨如果使用主题而不是队列来播放同一场景。 敬请关注…

资源资源

翻译自: https://www.javacodegeeks.com/2014/06/activemq-network-of-brokers-explained-part-4.html

activemq网络桥接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值