ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡
ActiveMQ集群搭建好之后,接下来就该测试一下了。
一、先安装Zookeeper 的eclipse插件吧。
1. 打开 eclipse, Help -》 Install New Software,点击Add,添加地址: http://www.massedynamic.org/eclipse/updates/

2. 点击OK,勾选Zookeeper插件,另外两个貌似没用

3. 安装完之后,点击Window-》Show View-》Other,选择安装的Zookeeper插件

4. 出现Zookeeper控制台后,点击右上角的按钮,增加Zookeeper节点。

出现界面

点击Add

添加你的Zookeeper IP,Finish
5. 查看集群信息。
如果你的Zookeeper+ActiveMQ开启的话,会出现

二、代码
一个简单的生产者:
package mq.cluster; import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class Sender { public static void main(String[] args) throws Exception { //1. 建立一个ConnectionFactory. 默认tcp://0.0.0.0:61616
String userName = ActiveMQConnectionFactory.DEFAULT_USER;
String password = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
String brokerURL = "failover:(tcp://192.168.127.129:61616,tcp://192.168.127.130:61616,tcp://192.168.127.131:61616)?Randomize=false";
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, brokerURL); //2. 通过ConnectionFactory建立一个Connection连接,并且调用start方法开启
Connection connection = connectionFactory.createConnection();
connection.start(); //3. 通过Connection创建Session,用于接收消息[第一个参数:是否启用事务;第二个参数:设置签收模式]
// Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);//手工签收--常用 //4. 通过Session创建Destination对象
Destination destination = session.createQueue("foodQueue"); //5. 通过Session创建发送或接受对象
MessageProducer messageProducer = session.createProducer(null); //7. 使用JMS规范里面消息类型之一 TextMessage 来创建数据,用MessageProducer来发送
for (int i = 1; i < 500; i++) {
TextMessage message = session.createTextMessage();
message.setText("大萝卜" + i);
//参数:目标,消息,传递数据的模式,优先级,消息的过期时间
messageProducer.send(destination, message, DeliveryMode.NON_PERSISTENT, 0, 1000*60);
//System.out.println("生产者:" + message.getText());
Thread.sleep(1000);
} //使用事务要手动提交
//session.commit(); //8. 关闭连接
connection.close(); }// main
}
因为是集群,所以brokerUrl要与众不同,
String brokerURL = "failover:(tcp://192.168.127.129:61616,tcp://192.168.127.130:61616,tcp://192.168.127.131:61616)?Randomize=false";
一个简单的消费者:
package mq.cluster; import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class Receiver { public static void main(String[] args) throws Exception { //1. 建立一个ConnectionFactory. tcp://0.0.0.0:61616
String userName = ActiveMQConnectionFactory.DEFAULT_USER;
String password = ActiveMQConnectionFactory.DEFAULT_PASSWORD;
String brokerURL = "failover:(tcp://192.168.127.129:61616,tcp://192.168.127.130:61616,tcp://192.168.127.131:61616)?Randomize=false";
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password, brokerURL); //2. 通过ConnectionFactory建立一个Connection连接,并且调用start方法开启
Connection connection = connectionFactory.createConnection();
connection.start(); //3. 通过Connection创建Session,用于接收消息[第一个参数:是否启用事务;第二个参数:设置签收模式]
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //4. 通过Session创建Destination对象
Destination destination = session.createQueue("foodQueue"); //5. 通过Session创建发送或接受对象
MessageConsumer messageConsumer = session.createConsumer(destination); //7. 使用JMS规范里面消息类型之一 TextMessage 来创建数据
while (true) {
TextMessage message = (TextMessage) messageConsumer.receive();
if(message == null) break;
System.out.println("消费者:" + message.getText());
} //8. 关闭连接
connection.close(); }// main
}
先开启消费者,让它先阻塞,准备吃饭。然后开启生产者:

浏览器打开提供服务的MQ控制台

一切正常
三、关于负载均衡
画个图先~仅供参考【这部分真的仅供参考啊!!别喷我,但是可以告诉我怎样是对的
,希望大家指正】
目前的架构:

负载均衡方案:=========================================

第二种方案呢,假设我们整个应用是个食堂,这个食堂里面有好多饭口,每个饭口有好多大爷大妈(咦~~~)。每个饭口实现了高可用,即使有大妈不上班,还有大爷顶上。针对好多学生(用户),实现了负载均衡,学生被基本均匀的分配到每一个饭口上。
食堂----应用
饭口----集群
大妈----服务器
==================================
现在我们利用Broker-Cluster 可以解实现负载均衡。配置的方法就是:
打开activemq.xml文件,在persistenceAdapter的前面加上
<networkConnectors></networkConnectors> |
就拿这两个集群来说:
集群1 >>>>>>>>链接>>>>>>>> 集群2:192.168.127.1,192.168.127.2,192.168.127.3 加上
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.127.4:61616,tcp://192.168.127.5:61616,tcp://192.168.127.6:61616)" duplex="false"/>
</networkConnectors>
集群2 >>>>>>>>链接>>>>>>>> 集群1: 192.168.127.4,192.168.127.5,192.168.127.6 加上
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.127.1:61616,tcp://192.168.127.2:61616,tcp://192.168.127.3:61616)" duplex="false"/>
</networkConnectors>
说白了就是把对方的地址拿过来
如果是三个集群呢?
那么就多加一个<networkConnector uri="tcp://..."/>
比如多了一个集群3(IP:192.168.127.7,192.168.127.8,192.168.127.9)
集群1 >>>>>>>>链接>>>>>>>> 集群2&集群3:192.168.127.1,192.168.127.2,192.168.127.3 加上
<networkConnectors>
<networkConnector uri="static:(tcp://192.168.127.4:61616,tcp://192.168.127.5:61616,tcp://192.168.127.6:61616)" duplex="false"/>
<networkConnector uri="static:(tcp://192.168.127.7:61616,tcp://192.168.127.8:61616,tcp://192.168.127.9:61616)" duplex="false"/>
</networkConnectors>
集群2 >>>>>>>>链接>>>>>>>> 集群1&集群3 和 集群3 >>>>>>>>链接>>>>>>>> 集群1&集群2 照葫芦画瓢
最后还是要说一句:仅供参考啊!!!!!
ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡的更多相关文章
- EMQ集群搭建实现高可用和负载均衡(百万级设备连接)
一.EMQ集群搭建实现高可用和负载均衡 架构服务器规划 服务器IP 部署业务 作用 192.168.81.13 EMQTTD EMQ集群 192.168.81.22 EMQTTD EMQ集群 192. ...
- 每秒处理3百万请求的Web集群搭建-用 LVS 搭建一个负载均衡集群
这篇文章是<打造3百万次请求/秒的高性能服务器集群>系列的第3部分,有关于性能测试工具以及优化WEB服务器部分的内容请参看以前的文章. 本文基于你已经优化好服务器以及网络协议栈的基础之上, ...
- MySQL集群(三)mysql-proxy搭建负载均衡与读写分离
前言 前面学习了主从复制和主主复制,接下来给大家分享一下怎么去使用mysql-proxy这个插件去配置MySQL集群中的负载均衡以及读写分离. 注意:这里比较坑的就是mysql-proxy一直没有更新 ...
- Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...
- Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群
ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...
- Centos7上搭建activemq集群和zookeeper集群
Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...
- ActiveMQ集群
1.ActiveMQ集群介绍 1.为什么要集群? 实现高可用,以排除单点故障引起的服务中断 实现负载均衡,以提升效率为更多客户提供服务 2.集群方式 客户端集群:让多个消费者消费同一个队列 Broke ...
- Kubeadm部署K8S(kubernetes)集群(测试、学习环境)-单主双从
1. kubernetes介绍 1.1 kubernetes简介 kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理.目的是实现资源管理的自动 ...
- 基于zookeeper+leveldb搭建activemq集群--转载
原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 ...
随机推荐
- Iptables防火墙规则使用梳理
iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...
- og标签对SEO的作用及用法
meta property=og标签对SEO的作用及用法,如果你仔细观察会发现本站点<head>代码中有一段:"property="og:image"这段代码 ...
- Promise 原理
异步:可同时好几件事,互不影响: 同步:按循序一件一件.... 异步好多缺点:.... promise就是解决异步计算的这些缺点的,主要用于: 1.异步计算: 2.可以将异步操作队列化 按期望的顺序 ...
- SE Springer小组之《Spring音乐播放器》需求分析说明书二
2.1 目标 Spring音乐播放器软件为课程<软件工程>所开发的课程作业,主要意图是为访问计算机中的mp3格式的音频文件,并使其能够完成访问,读取,添加,保存,播放,切换音频文件等功能. ...
- 07-java学习-方法重载-idea集成开发工具学习-项目-模块-包
方法重载的概念? 方法重载的好处? 集成开发工具idea的学习 下载 安装 设置 建项目 导入项目 建模块 导入模块 建包 复制粘贴包 建类 复制粘贴类 运行 调试
- python 中的列表(list)
一.生成一个列表 直接生成 L1 = [1, 2, 3, 4, 5] 列表解析式 >>> L2 = [x for x in range(1, 10, 2)] #从1到10的迭代,步长 ...
- Hitchhiker 是一款开源的 Restful Api 测试工具
Hitchhiker 是一款开源的 Restful Api 测试工具 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到 Hitchhiker 是一款开源的 Restf ...
- Apache+php安装和配置 windows
Apache+php安装和配置 windows Apache 安装 1.官网网址:http://httpd.apache.org/ 2.Download 3.点击链接Files for Microso ...
- 一本通1587【例 3】Windy 数
1587: [例 3]Windy 数 时间限制: 1000 ms 内存限制: 524288 KB 题目描述 原题来自:SCOI 2009 Windy 定义了一种 Windy 数:不含前 ...
- 改变自己从学习linux开始
刚刚高中毕业,进如大学的时候,总以为摆脱了束缚可以无拘无束的玩耍了.当时真的就是和众多大学生一起,像撒欢的野马,每天逃课,上网,泡吧,不把学习当一会事,学校里教授讲的各种知识也没有听在心里,前两年玩的 ...