ActiveMQ 5.9.0新推出的主从实现,基于zookeeper来选举出一个master,其他节点自动作为slave实时同步消息。因为有实时同步数据的slave的存在,master不用担心数据丢失,所以leveldb会优先采用内存存储消息,异步同步到磁盘,所以该方式的activeMQ读写性能最好因为选举机制要超过半数,所以最少需要3台节点,才能实现高可用。如果集群是两台则master失效后slave会不起作用,所以集群至少三台。此种方式仅实现主备功能,避免单点故障,没有负载均衡功能。

1、环境准备
IP
192.168.3.10 server1
192.168.3.11 server2
192.168.3.12 server3
安装软件信息:
apache-activemq-5.13.0-bin.tar.gz
zookeeper-3.5.2-alpha.tar.gz
ZooInspector.zip
2、搭建Zookeeper集群
(1)将zookeeper-3.5.2-alpha.tar.gz文件解压到/home/wzh/zk目录;
(2)将zoo_sample.cfg复制一份为 zoo.cfg,并修改其配置信息
wzh@hd-master:~/zk/zookeeper-3.5.2-alpha/conf$ cp zoo_sample.cfg zoo.cfg
wzh@hd-master:~/zk/zookeeper-3.5.2-alpha/conf$vim zoo.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper clientPort=2181 server.1=192.168.3.10:2888:3888 server.2=192.168.3.11:2888:3888 server.3=192.168.3.11:2888:3888
(3)创建/tmp/zookeeper目录
在该目录下创建名为myid的文件,内容为1(这个值随server而改变)
(4)将server1上的/home/wzh/zk/zookeeper-3.5.2-alpha文件夹复制到server2,server3,然后创建/tmp/zookeeper目录
在该目录下创建名为myid的文件,内容为2
(5)启动zookeeper
[192.168.3.10]
wzh@hd-master:~/zk/zookeeper-3.5.2-alpha/bin$ ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/wzh/zk/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
[192.168.3.11]
wzh@hd-slave1:~/zk/zookeeper-3.5.2-alpha/bin$ ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/wzh/zk/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
[192.168.3.12]
wzh@hd-slave2:~/zk/zookeeper-3.5.2-alpha/bin$ ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/wzh/zk/zookeeper-3.5.2-alpha/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
3、搭建ActiveMQ集群
(1)将apache-activemq-5.13.0-bin.tar.gz解压到/home/wzh/amq
(2)修改activemq.xml配置文件
【1】将broker节点的brokerName设置为wzhamq
复制代码 代码如下:<broker xmlns="http://activemq.apache.org/schema/core" brokerName="wzhamq" dataDirectory="${activemq.data}">
【2】将persistenceAdapter的持久化方式选用replicatedLevelDB,将kahaDB方式注释掉
<persistenceAdapter>
<!--
<kahaDB directory="${activemq.data}/kahadb"/>
-->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:0"
zkAddress="192.168.3.10:2181,192.168.3.11:2181"
hostname="192.168.3.10"
sync="local_disk"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
将apache-activemq-5.13.复制到11,12机器
wzh@hd-master:~/amq$ scp -r apache-activemq-5.13.0/ wzh@192.168.3.11:/tmp
修改配置文件中的hostname="192.168.3.11"
修改配置文件中的hostname="192.168.3.12"
(3)启动ActiveMQ
wzh@hd-master:~/amq$ ./apache-activemq-5.13.0/bin/activemq status INFO: Loading '/home/wzh/amq/apache-activemq-5.13.0//bin/env' INFO: Using java '/opt/java/jdk1.8.0_91/bin/java' ActiveMQ is running (pid '2031') wzh@hd-master:~/amq$
依次启动192.168.3.11,192.168.3.12机器
4:集群管理
(1)通过使用ZooInspector工具查看zookeeper集群情况
(2)http://192.168.3.10:8161/admin/ 默认用户名与口令为admin登录ActiveMQ管理端
5、通过Spring-boot操作ActiveMQ JMS
(1)通过gradle构建Spring-boot应用,在 gradle文件中增加
dependencies {
compile('org.springframework.boot:spring-boot-starter-activemq')
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
(2)application中增加以下配置
spring.activemq.broker-url=failover:(tcp://192.168.3.10:61616,tcp://192.168.3.11:61616,tcp://192.168.3.12:61616) spring.activemq.in-memory=true spring.activemq.pool.enabled=false spring.activemq.user=admin spring.activemq.password=admin
(3)JMS消息发送
@Service
public class Producer {
@Autowired
private JmsMessagingTemplate jmsTemplate;
public void sendMessage(Destination destination, final String message){
jmsTemplate.convertAndSend(destination, message);
}
}
(4)JMS消息接收
@Component
public class Consumer {
@JmsListener(destination = "test.queue")
public void receiveQueue(String text){
System.out.println("Consumer收到的报文为:"+text);
}
}
(5)测试
@RestController
@RequestMapping(
value = "/test",
headers = "Accept=application/json",
produces = "application/json;charset=utf-8"
)
public class TestCtrl {
@Autowired
Producer producer;
Destination destination = new ActiveMQQueue("test.queue");
@RequestMapping(
value = "/say/{msg}/to/{name}",
method = RequestMethod.GET
)
public Map<String, Object> say(@PathVariable String msg, @PathVariable String name){
Map<String, Object> map = new HashMap<>();
map.put("msg", msg);
map.put("name", name);
producer.sendMessage(destination, msg);
return map;
}
}
(6)进入ActiveMQ管理控制台创建一个消息队列
test.queue
(7)通过POSTMAN进行测试
2017-08-03 08:10:44.928 INFO 12820 --- [ActiveMQ Task-3] o.a.a.t.failover.FailoverTransport : Successfully reconnected to tcp://192.168.3.10:61616
2017-08-03 08:11:08.854 INFO 12820 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://192.168.3.10:61616
Consumer收到的报文为:hello
2017-08-03 08:43:39.464 INFO 12820 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport : Successfully connected to tcp://192.168.3.10:61616
Consumer收到的报文为:hello
(8)目前系统连接的是10,如果此时将10集群Down掉,系统会理解选择一台slave作为master提供服务,从而启动案例主备的效果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# ActiveMQ
# zookeeper
# 主从搭建
# Caffe图像数据转换成可运行leveldb lmdb文件
# 区块链常用数据库leveldb用java来实现常规操作的方法
# 快速了解python leveldb
# 更高效的GoLevelDB:shardingdb实现分片和并发读写操作
# 配置文件
# 单点
# 的是
# 目录下
# 一台
# 设置为
# 此种
# 两台
# 创建一个
# 时将
# 大家多多
# 为有
# 进行测试
# 不起作用
# 数据丢失
# 以该
# 负载均衡
# STARTED
# bash
# Starting
相关文章:
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
网站图片在线制作软件,怎么在图片上做链接?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
江苏网站制作公司有哪些,江苏书法考级官方网站?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
Android自定义listview布局实现上拉加载下拉刷新功能
javascript中对象的定义、使用以及对象和原型链操作小结
高端网站建设与定制开发一站式解决方案 中企动力
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
,南京靠谱的征婚网站?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何高效搭建专业期货交易平台网站?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
制作网页的网站有哪些,电脑上怎么做网页?
网页设计与网站制作内容,怎样注册网站?
建站主机选虚拟主机还是云服务器更好?
如何通过宝塔面板实现本地网站访问?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
c# 在高并发场景下,委托和接口调用的性能对比
如何通过FTP服务器快速搭建网站?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何通过网站建站时间优化SEO与用户体验?
盘锦网站制作公司,盘锦大洼有多少5G网站?
如何高效配置香港服务器实现快速建站?
如何基于云服务器快速搭建个人网站?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
高端企业智能建站程序:SEO优化与响应式模板定制开发
宝塔建站后网页无法访问如何解决?
制作网站怎么制作,*游戏网站怎么搭建?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
免费网站制作appp,免费制作app哪个平台好?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何快速生成高效建站系统源代码?
如何配置FTP站点权限与安全设置?
如何通过虚拟机搭建网站?详细步骤解析
学校为何禁止电信移动建设网站?
如何破解联通资金短缺导致的基站建设难题?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
定制建站流程步骤详解:一站式方案设计与开发指南
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
如何快速完成中国万网建站详细流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。