本文主要是介绍activemq的多个broker之间的消息共享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
假设activemq有两个broker服务,A和B。
在A的activemq.xml的broker标签下添加如下配置:
<networkConnectors>
<networkConnector uri="static:(tcp://172.16.15.111:61616,tcp://172.16.15.111:61626)" duplex="true"/></networkConnectors>
该配置可以让消息从A到B,或者从B到A。但只能流动一次。也就是不能从A到B再回到A。
如果duplex="false"则只能从A到B。
那么如何能让消息来回流转,使A和B自由共享消息呢?
在activemq.xml的policyEntries标签下(注意这里需要在A和B上都配置)做如下配置:
<policyEntry queue=">" enableAudit="false">
<networkBridgeFilterFactory>
<conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true"/>
</networkBridgeFilterFactory>
</policyEntry>
该配置可以实现消息回流。
客户端连接broker的时候使用容错机制"failover:(tcp://172.16.15.111:61616,tcp://172.16.15.111:61626)",这样当某个broker挂了,客户端会自动连接别的broker。
以上配置也间接实现了activemq的均衡负载。
不过这种均衡负载是针对broker的,也就是说如果A上连了一个客户端,B上连了两个,那么A上的一个客户端消费的和B上的两个客户端加起来相等。
如果要三个客户端均分的话,需要给networkConnector标签添加一个属性,也就是在duplex="true"后面添加conduitSubscriptions="false"。它的意思是多个网络消费者是否被当做一个消费者来对待。
这篇关于activemq的多个broker之间的消息共享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!