ActiveMQ(二十三)--集群下的消息回流功能

本文探讨了在ActiveMQ中消息无法在Broker间双向流动的问题,通过特定配置实现了消息的回流,确保了消息能够在停止消费后继续被接收。同时,文章还提及了在消息消费过程中的负载不均衡现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

测试:

一、单向的情况

 

重启mq

接上一篇的代码,稍作修改

先运行QueueSender1,发送30条消息到brokerA

然后,运行QueueReceiver2,开始消费,过几秒,停止。此时,brokerB把30条消息都拿到自己这边了。

再运行QueueReceiver1,一条消息也收不到。

 

二、双向的情况

重启mq

先运行QueueSender1,发送30条消息到brokerA

然后,运行QueueReceiver2,开始消费,过几秒,停止。此时,brokerB把30条消息都拿到自己这边了。

再运行QueueReceiver1,一条消息也收不到。

说明这种情况下,双向的也不行。

那双向是什么意思呢?是指,有生产者把消息发给b1,那么b2可以从b1拿到,反过来,也是一样的。

 

三、解决方法

<policyEntry queue=">" enableAudit="false">
	<networkBridgeFilterFactory>
		<conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true"/>
	</networkBridgeFilterFactory>
</policyEntry>

conf和conf2里面的 activemq.xml里面都要加这段配置

这里要小心帖进去的代码里面的空格和换行符的格式要正确,不然,没法启动mq。(这个坑花了我20分钟)

测试:

重启mq

先运行QueueSender1,发送30条消息到brokerA

然后,运行QueueReceiver2,开始消费,过几秒,停止。此时,brokerB把30条消息都拿到自己这边了。

再运行QueueReceiver1,从QueueReceiver2停止的消息开始,接着消费。说明,消息可以回流了。

 

四、另一个测试

先启动QueueReceiver1和QueueReceiver2,然后启动QueueSender1。

会发现,QueueReceiver1和QueueReceiver2瓜分了QueueSender1发送的30条消息。但是,并不均衡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值