activeMQ默认负载和负载均衡

默认负载

场景说明

  • 如下图,假设接收端 1、2、3 都订阅了队列TEST.FOO,发送端连接到 MQ 1 并发送 了 12 个消息到队列TEST.FOO。

  • 默认情况下管道订阅是生效的,所以 MQ 1 有两个订阅。

  • 来自接收端 1 和 MQ 2,然后将消息交替发送给接收端 1 和 MQ 2。

  • 如果接收端 1 和 MQ 2 接收速度相同,将会各收到 6 个消息。

  • MQ 2 有 2 个消费者:接收端 2 和接收端 3,交替发送消息给它们,

  • 如果接收端 2、接收端3 接收速度相同,将会各收到3 个消息。 最终接收端 1、接收端 2、接收端 3 收到消息为 6、3、3,

  • 并不符合负载均衡原则,接收端1 处理了 2 倍的消息。

img

配置文件

  1. 使用kahadb数据库,注掉MySQL连接信息
  2. 在broker标签内添加brokerId,修改brokerName名字(保证唯一)
<broker xmlns="http://inforsuitemq.cvicse.com/schema/core" brokerName="broker1"  brokerId="A" dataDirectory="${inforsuitemq.data}" useJmx="true">  

3.添加networkConnectors标签,name为其他集群中broker标签内的brokerName值,uri为其他集群的地址.

<networkConnectors>
		<!--默认负载 <networkConnector name="linkToBrokerB" uri="static:(tcp://127.0.0.1:8689)" networkTTL="3"/> -->
		<networkConnector name="linkToBrokerB" uri="static:(tcp://127.0.0.1:8689)" networkTTL="3" conduitSubscriptions="true"/>
</networkConnectors>

conduitSubscriptions=“true”----->设置为负载均衡(默认为负载均衡)

场景使用

设置完xml配置后,先运行三个消费者在运行生产者。

负载均衡

在xml里networkConnectors设置conduitSubscriptions=“false” 。

  • 概述

下图显示了禁止管道订阅后,队列消息如何分发给消费者。假设接收端 1、接收端 2、接收端 3 都订阅了队列 TEST.FOO,发送端连接到 MQ 1 并发送了 12 个消息到队列TEST.FOO。禁 止管道订阅后,MQ 1 可以看到 MQ 2 上的所有订阅和接收端 1 的订阅,然后交 替分发消息,假设消费者接收消息速度相同,接收端 1 将收到 4 个消息,MQ 2 将收到 8 个消息。MQ 2 有两个订阅,接收端 2、接收端 3,然后交替分发消息,假设 C2、C3 接收 端 2、接收端 3 速度相同,它们将各收到4 个消息。最终,接收端 1、接收端 2、接收端3 收到是消 息为 4、4、4,达到了负载均衡。

img

conduitSubscriptions="false"  //设置为负载均衡 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿红

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值