您的位置:首页 > 编程语言 > Java开发

Java消息队列-activemq集群与配置

2017-12-28 20:59 573 查看
主从集群方案:

Shared storage master/slave 共享存储

Replicated LevelDB Store 基于复制的LevelDB Store

基于复制的LevelDB Store的原理

三者配置同一个Zookeeper结点,

Zookeeper选举A为主(此时只有A具有服务的能力),A获得消息后本地储存,然后通过Zookeeper同步到B、C,

B、C分别对消息进行储存。



Broker Cluster 不具备高可用,它正在处理的消息可能会丢失。

但是它做到了负载均衡,也就是说各节点之间的消息可以被共用。



三台服务器,达到既可以支持高可用,又可以达到负载均衡的 效果

AB、AC组成 消息同步

BC组成 主从

按顺序启动ABC,

B拿到持久化资源成为主,C为从。

A为B的消息同步服务器,A不能持久化->通过同步->B进行持久化

A、B均可提供服务,达到 负载均衡+高可用

A宕机,B可继续提供服务(高可用)。

B恢复,可继续消费B上的消息;A上的新消息也可以被B消费。(集群未受影响)

B宕机,释放资源排它锁,C获得资源为主

B恢复,B为从



配置方案:



Node-A:

activemq.xml:
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
<networkConnectors>
<networkConnector name="local_network" uri="static:(tcp://127.0.0.1:61617,tcp://127.0.0.1:61618)"/>
</networkConnectors>
jetty.xml:
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8161"/>
</bean>


Node-B:

activeMQ.xml:
<persistenceAdapter>
<kahaDB directory="/acticeMQ-demo/kahadb"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
<networkConnectors>
<networkConnector name="local_network" uri="static:(tcp://127.0.0.1:61616)"/>
</networkConnectors>

jetty.xml:
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<property name="host" value="0.0.0.0"/>
<property name="port" value="8162"/>
</bean>


Node-C:

与B类似,下面只给出区别处:
tcp://0.0.0.0:61618
<property name="port" value="8163"/>


代码也就是在前一章使用的代码,只是在url处使用failover();

前一章: Java消息队列-ActiveMq代码记录

图片来源: 慕课网
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: