文章来源
http://hi.baidu.com/minordragon/blog/item/6752c21fcad2b211314e15e7.html
如下:
解决单点故障:Pure Master Slave
1. Master:给broker取个名字,修改其持久化KAHADB文件
2. Slave:给broker取个名字,修改其持久化KAHADB文件,需要配置Master的地址和端口
3. 一个Master只能带一个Slave
4. Master工作期间,会将消息状况自动同步到Slave
5. Master一旦崩溃,Slave自动接替其工作,已发送并尚未消费的消息继续有效
6. Slave接手后,必须停止Slave才能重启先前的Master
MQ配置
1. Master:首先复制 $activemq_dir$/conf/activemq.xml,并改名为:pure_master.xml,修改文件(192.168.0.20)
1) <broker brokerName="pure_master" …
2) <kahaDB directory="${activemq.base}/data/kahadb_pure_master "/>
3) <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
2. Slave:首先复制 $activemq_dir$/conf/activemq.xml,并改名为:pure_slave.xml,修改文件(192.168.0.86)
1) <broker brokerName="pure_slave" masterConnectorURI="tcp://192.168.0.20:61616" //master的ip
shutdownOnMasterFailure="false" …
2) <kahaDB directory="${activemq.base}/data/kahadb_pure_slave "/>
3) <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
3. 首先启动Master,启动完毕后在另一个Shell启动Slave,Slave启动后,可以看到Master那个Shell中显示已经Attach上了Slave
1) 启动Master:$activemq_dir$\bin>activemq xbean:file:../conf/pure_master.xml
2) 启动Slave:$activemq_dir$\bin>activemq xbean:file:../conf/pure_slave.xml
JAVA测试:队列
1. 生产者
public static void main(String[] args) throws Exception {
ConnectionFactory cf = new ActiveMQConnectionFactory("failover:(tcp://0.0.0.0:61616,tcp://0.0.0.0:61617)");
Connection conn = cf.createConnection();
conn.start();
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue qq = new ActiveMQQueue("qq1");
MessageProducer prod = sess.createProducer(qq);
Message msg = null;
Scanner scan = new Scanner(System.in);
String str = scan.next();
while(true) {
msg = sess.createTextMessage(str);
prod.send(msg);
if(str.equals("exit")) {
break;
}
str = scan.next();
}
conn.close();
}
2. 消费者
public static void main(String[] args) throws Exception {
ConnectionFactory cf = new ActiveMQConnectionFactory("failover:( tcp://0.0.0.0:61616,tcp://0.0.0.0:61617)");
Connection conn = cf.createConnection();
conn.start();
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue qq = new ActiveMQQueue("qq1");
MessageConsumer cs = sess.createConsumer(qq);
TextMessage msg = (TextMessage)cs.receive();
String str = msg.getText();
while(true) {
System.out.println("receive msg:\t"+msg.getText());
if(str.equals("exit")) {
break;
}
msg = (TextMessage)cs.receive();
str = msg.getText();
}
conn.close();
}
测试步骤
1. 启动生产者,发送几条消息
2. 启动消费者,可看到接收到的消息
3. 关闭消费者
4. 生产者继续发送几条消息—消息A
5. 停止Master(可看到生产者端显示连接到Slave(tcp://0.0.0.0:61617)了)
6. 生产者继续发送几条消息—消息B
7. 启动消费者
8. 消费者接收了消息A和消息B,可见Slave接替了Master的工作,而且储存了之前生产者经过Master发送的消息
结论
Pure Master Slave模式实现方式简单,可以实现消息的双机热备功能;队列可以实现消息的异步和点对点发送
分享到:
相关推荐
ActiveMQ 集群——JDBC Master Slave + Broker Cluster ActiveMQ 集群是指将多个 ActiveMQ 服务器组合在一起,以提高系统的可扩展性和可靠性。在这个集群中,我们可以使用 JDBC Master Slave 模式和 Broker Cluster...
这种配置是ActiveMQ推荐的策略之一,提供了三种不同的实现方式:Pure Master Slave、Shared File System Master Slave和JDBC Master Slave。 在安装和配置ActiveMQ Master-Slave集群之前,需要准备以下环境: 1. ...
在ActiveMQ中,主要有三种Master-Slave实现:Pure Master Slave、Shared File System Master Slave和JDBC Master Slave。这里主要讨论的是JDBC Master Slave模式,它依赖于数据库来确定哪个Broker是Master,哪个是...
在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...
ActiveMQ支持多种高可用的主从配置模式,包括Shared File System Master/Slave、JDBC Master/Slave和Replicated LevelDB Store。文章主要介绍了使用JDBC Master/Slave模式来实现ActiveMQ的高可用配置。 在JDBC ...
可以使用 Apache ActiveMQ 的集群模式,例如使用 Master-Slave 模式或 Replicated LevelDB 模式。 总结 搭建 ActiveMQ 持久化和集群环境需要对 Linux 操作系统、Java 环境、ActiveMQ 等方面有深入的了解。需要安装...
本示例将详细讲解如何基于KahaDB存储引擎构建ActiveMQ的高可用集群。 KahaDB是ActiveMQ的一个持久化存储机制,它提供了快速、可扩展和可靠的存储解决方案。在高可用集群中,KahaDB确保即使在broker故障时,消息也...
在Windows系统上搭建ActiveMQ集群是一项关键的任务,它涉及到分布式消息传递系统的设计和优化。ActiveMQ是Apache软件基金会开发的一款开源消息代理,它遵循Java Message Service (JMS) 规范,提供高可靠的消息传递...
** activemq master-slave 架构与 NFSV4 的集成** 在企业级消息传递系统中,Apache ActiveMQ 是一个广泛使用的开源消息代理,它提供了可靠的消息传递服务。为了实现高可用性和容错性,ActiveMQ 支持主从(master-...
ActiveMQ是Apache软件基金会的一个开源项目,它是一款高效、强大的消息中间件,而ZooKeeper则是一个分布式协调服务,用于管理分布式应用的配置信息、命名服务、集群状态等。在大型分布式系统中,这两者的结合使用...
ActiveMQ集群部署方式对比:Pure Master Slave方式,Shared Filesystem Master-Slave方式 ,Shared Database Master-Slave方式,Replicated LevelDB Store方式,Broker-Cluster部署方式....
本篇文章将深入探讨两个主流的消息队列服务——RabbitMQ和ActiveMQ,特别是它们在集群环境下的部署和配置。 首先,我们来看RabbitMQ集群。RabbitMQ是一款基于AMQP协议的开源消息中间件,由Erlang编程语言实现,以其...
在ActiveMQ集群环境中,实现消息均衡消费和主备切换是一个重要的功能。本示例主要讨论了如何通过配置和代码实现ActiveMQ集群中的`conduitSubscriptions`策略,以及结合`jdbc`存储,来确保消息的高可用性和消费的均衡...
本篇文章记录centos6下ActiveMQ+Zookeeper消息中间件集群-完整部署过程,讲解十分详细,本人线上实操手册。在此分享出来,希望能帮助到有用到的朋友。
本文档将详细介绍如何利用 ZooKeeper 实现 ActiveMQ 的 Master-Slave 集群配置,以及具体的部署步骤。 #### 二、ActiveMQ 高可用原理 ##### 2.1 原理概述 在 ActiveMQ 的集群配置中,采用 ZooKeeper 作为集群协调...
Master-Slave模式是ActiveMQ的一种简单的集群模式,其中有一个主节点(Master)和多个从节点(Slave)。主节点处理所有的消息发送和接收,而从节点则用作备份。一旦主节点宕机,一个从节点会接替主节点的角色成为新...
ZooKeeper在ActiveMQ中的主要作用是作为集群的选主仲裁器,确保在多台服务器组成的ActiveMQ集群中,只有一个Master节点对外提供服务,从而保证消息的有序性。 LevelDB是Google开源的一个轻量级、高性能、单机键值对...
之后可以通过ActiveMQ的管理界面来验证集群状态,确认Master和Slave是否正常通信并处于活动状态。 #### 五、总结 通过以上步骤,我们完成了ActiveMQ集群的安装和基本配置。ActiveMQ集群可以显著提高消息处理的能力...