测试:
一、单向的情况
重启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条消息。但是,并不均衡。