activemq网络桥接

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

在第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><networkConnectorname="Q:broker1->broker2"uri="static:(tcp://localhost:61626)"duplex="false"decreaseNetworkConsumerPriority="true"networkTTL="2"dynamicOnly="true"><excludedDestinations><topic physicalName=">" /></excludedDestinations></networkConnector>
    <networkConnectorname="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)。
      http:// localhost:8161 / admin / queues.jsp

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

  10. 让我们将30条消息生成到broker-1的队列moo.bar中,并查看消息如何在使用者C1,C2和C3之间划分:
    显示消息如何从生产者传播到消费者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><networkConnectorname="Q:broker1->broker2"uri="static:(tcp://localhost:61626)"duplex="false"decreaseNetworkConsumerPriority="true"networkTTL="2"conduitSubscriptions="false"dynamicOnly="true"><excludedDestinations><topic physicalName=">" /></excludedDestinations></networkConnector><networkConnectorname="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条消息,以实现负载平衡。 如下图所示。

显示消息如何从生产者传播到消费者C1,C2,C3

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

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

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

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

资源资源

  • http://fusesource.com/docs/esb/4.3/amq_clustering/Networks-Connectors.html
  • 此博客中使用的所有代理的配置文件(activemq.xml和jetty.xml)在此处可用。

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

activemq网络桥接

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

  1. activemq网络桥接_ActiveMQ –经纪人网络解释–第3部分

    activemq网络桥接 现在,我们已经在本博客系列的第1部分和第2 部分中了解了ActiveMQ网络连接器的基础,在第3部分中,我们将研究ActiveMQ如何平衡连接到代理网络的使用者. 介绍 当可 ...

  2. activemq网络桥接_ActiveMQ –经纪人网络解释

    activemq网络桥接 目的 这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息. 为什么要建立经纪人网络? ActiveMQ消息代理是企业中消息传递 ...

  3. activemq网络桥接_ActiveMQ –经纪人网络解释–第5部分

    activemq网络桥接 在前面的第4部分中,我们已经看到了如何使用网络连接器在队列中平衡远程使用者的负载. 在第5部分中,如果主题上同时存在多个远程持久订阅者,我们将看到相同的配置如何工作. 考虑以 ...

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

    activemq网络桥接 在此博客中,我们将看到双工网络连接器如何工作. 在上一部分中,我们从broker-1和broker-2创建了一个网络连接器. 我们能够看到,当代理2上有一个使用者使用队列&q ...

  5. Linux——网络桥接

    什么是网络桥接? 在网络的使用中,有时需要搭建网络桥来实现网络桥接.例如在一台主机上制作一台虚拟机, 虚拟机是没有物理网卡的,这时虚拟机数据的发送和接收就需要通过主机上的物理网卡,需要主机 的内核来处 ...

  6. ActiveMQ –经纪人网络解释

    目的 这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息. 为什么要建立经纪人网络? ActiveMQ消息代理是企业中消息传递基础结构的核心组件. 它需 ...

  7. ActiveMQ –经纪人网络解释–第4部分

    在前面的第3部分中 ,我们已经看到ActiveMQ如何帮助将远程使用者与本地使用者区分开来,这有助于确定从消息生产者到使用者的较短路径. 在第4部分中,我们将研究如何在远程代理上负载均衡并发使用者. ...

  8. ActiveMQ –经纪人网络解释–第5部分

    在前面的第4部分中,我们已经看到了如何使用网络连接器在队列中平衡远程使用者的负载. 在第5部分中,我们将看到如果在某个主题上有并发远程持久订阅者,则相同的配置将如何工作. 考虑以下配置-. 图1:经纪 ...

  9. ActiveMQ –经纪人网络解释–第3部分

    现在,我们已经在本博客系列的第1部分和第2 部分中了解了ActiveMQ网络连接器的基础,在第3部分中,我们将研究ActiveMQ如何平衡连接到代理网络的使用者. 介绍 当可以无序处理队列中的消息时通 ...

最新文章

  1. Android的Intent你知道多少?
  2. python第三方包的windows安装文件exe格式
  3. Java设计模式之行为型:模板方法模式
  4. sumif三个条件怎么填_函数SUMIF和SUMIFS
  5. poj 3468 A Simple Problem with Integers(线段树区区)
  6. Asp.Net MVC4入门指南(5):从控制器访问数据模型
  7. 安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程
  8. 9月26日发布?一加7T系列被“扒光”:硬核到没朋友
  9. ssis zip压缩文件_在SSIS中处理参差不齐的正确格式的文件
  10. 阿里正式进军机器人赛道,首款物流机器人“小蛮驴”来了!
  11. 在阿里云上遇见更好的Oracle(四)
  12. 编写led驱动及其实验过程
  13. 经典~吸引力法则:你相信什么,就会吸引什么,获得什么
  14. 邮箱每日发送有上限吗?各大邮箱每天限制发信数量多少?
  15. [有感而发]与刺客独行
  16. 电赛校赛总结----一维板球系统【代码开源】
  17. 使用https请求接口报:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常的问题处理
  18. 算法提高 盾神与积木游戏
  19. 家用计算机都是专用计算机吗,什么是因特网概念和互联网一样吗(因特网发展历程)...
  20. 基于Android的理财app开发,基于Android的个人理财系统的设计与实现.doc

热门文章

  1. P1082-扩欧模板同余方程【扩欧,数论】
  2. HDU 5008 Boring String Problem ( 后缀数组求本质不同第k大子串)
  3. hihocoder1147 时空阵(bfs树+DP)
  4. Spring Data之MongoDB配置
  5. Spring Boot 最佳实践
  6. Oracle入门(十四.21)之创建DML触发器:第二部分
  7. Druid-目前最好的连接池
  8. 3分钟了解“关联规则”推荐
  9. Spring入门(四)之BeanFactory
  10. java实现遍历树形菜单方法——数据库表的创建