activemq cluster masterslave 配置
来源:互联网 发布:php程序员需要什么软件 编辑:程序博客网 时间:2024/05/01 18:14
Activemq集群主备简单配置,基于5.13.3
Master-slave 基于zk的方式
修改activemq.xml
<brokerxmlns="http://activemq.apache.org/schema/core" brokerName="<span style="color:#ff0000;">broker-a</span>"dataDirectory="${activemq.data}">
<replicatedLevelDB directory="activemq-data" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="your address" zkPath="/activemq/leveldb-stores" hostname="localhost " sync=”local_disk”/>
<transportConnector name="openwire"uri="tcp://${ip}:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
${ip} 应该是机器的实际ip地址,使用127.0.0.1或者localhost,则导致client无法连接.
修改jetty.xml,修改端口号为不同的(e.g. 8161, 8161,8163)
然后启动
./activemq start (后台进程)
./activemq stop
基于上述配置,创建2个slave的目录,
brokerName一致才会认为是一个cluster,且至少有3个才会成功,否则无法选主,导致没有broker可以提供服务
测试master-slave:
Uri="failover:(tcp://ip1:61616,tcp://ip2:61617,tcp://ip3:61618)"
消息发送,默认到ip1上,查看ip1的admin后台,有消息(此时ip1为master)
停止ip1的服务,继续发送,查看ip2的admin后台,有新消息达到(此时ip2为master)
启动ip1的服务,可以看到变成slave
配置cluster:
和上面的配置类似,brokerName变成broker-b,tcp的端口进行变更
剩余其他的transportConnector,对应的端口号,每组broker可以一致,但是不同的broker要不同(我是同一台机器)
启动broker-a 和 broker-b
可以看到2个broker直接建立链接的log
| Network connection between vm://broker-a#6 and tcp://{ip}:61716 (broker-b) has been established.
INFO | Network connection between vm://broker-b#0 and tcp://{ip}:61616 (broker-a) has been established.
最终broker-a的配置
<networkConnectors><!-- 连接broker-b --> <networkConnector uri="masterslave:(tcp://${ip}:61716,tcp:// ${ip}:61717,tcp:// ${ip}:61718)"/> </networkConnectors> <persistenceAdapter> <replicatedLevelDB directory="activemq-data" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="${ip}:2181" zkPath="/activemq/leveldb-stores" hostname="localhost" sync="local_disk" /> </persistenceAdapter><transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><!-- 示例用的tcp,每个机器的端口要不同--> <transportConnector name="openwire" uri="tcp://${hostIp}:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/></transportConnectors>broker-b的配置
<networkConnectors><!-- 连接broker-a --> <networkConnector uri="masterslave:(tcp://${ip}:61616,tcp:// ${ip}:61617,tcp:// ${ip}:61618)"/> </networkConnectors> <persistenceAdapter> <replicatedLevelDB directory="activemq-data" replicas="3" bind="tcp://0.0.0.0:0" zkAddress="${ip}:2181" zkPath="/activemq/leveldb-stores" hostname="localhost" sync="local_disk" /> </persistenceAdapter><transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><!-- 示例用的tcp,每个机器的端口要不同--> <transportConnector name="openwire" uri="tcp://${hostIp}:61716?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/></transportConnectors>
测试cluster
Uri="failover:(tcp://ip1:61616,tcp://ip2:61617,tcp://ip3:61618,tcp://ip4:61716,tcp://ip5:61717,tcp://ip6:61718)"
1.启动Java的consumer client,看log连到了broker-a,即前3个ip的集群
从broker-a的后台给queue发消息(10个),client可以接收到
从broker-b的后台给queue发消息(5个),client也可以接收到(broker-a会从broker-b把消息拉过来)
此时broker-a的queue上有15个消息,broker-b上有5个消息
2.启动2个consumer,分别连到broker-a 和 broker-b,向不同的broker发消息,对应的consumer可以接收到,向某一个broker发多个消息,两个consumer均能收到消息
看log,urlList和上面的uri顺序是不一致的,然后按顺序连接
Reference
http://activemq.apache.org/clustering.html
http://activemq.apache.org/replicated-leveldb-store.html
http://activemq.apache.org/persistence.html
http://kevinboone.net/amqmasterslave.htmlhttps://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.1/html/Fault_Tolerant_Messaging/files/FMQFaultTolNetwork.html
- activemq cluster masterslave 配置
- activemq cluster
- (3) ActiveMQ -- Cluster
- activemq dynamic broker cluster
- ActiveMQ配置 连接activemq
- activemq 配置
- ActiveMQ配置
- activeMq配置
- ActiveMQ配置
- 配置activeMQ
- ActiveMQ 配置
- ActiveMQ笔记(4):搭建Broker集群(cluster)
- activemq--MASTER SLAVE+BROKER CLUSTER 实践(一)
- activemq--MASTER SLAVE+BROKER CLUSTER 实践(二)
- 单机配置Tomcat Cluster
- weblogic11g cluster 配置说明
- 配置webshpere cluster
- mysql cluster 配置
- android intent.setType("type");的含义
- leetcode 144. Binary Tree Preorder Traversal
- opencv:求一幅图片的LBP纹理图(c++版本)
- CAS(3)——Cas Server中各配置文件介绍
- 注册表
- activemq cluster masterslave 配置
- JavaScript高级程序设计(第3版)学习笔记——callee
- 进制之间的转换
- linux下的.so和.a文件
- [Java笔试面试知识点自整理系列]Java线程中run和start方法的区别
- Python微博地点签到大数据实战(二)POI与坐标
- 图片处理资源整理(转)(待续)
- BI报表系统在银行业的应用
- DB2创建主键自增,时间自动获取的表