全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ActiveMQ基于zookeeper的主从(levelDB Master/Slave)搭建

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 


相关文章: 极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何选择高效便捷的WAP商城建站系统?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何制作算命网站,怎么注册算命网站?  如何快速搭建响应式可视化网站?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何注册花生壳免费域名并搭建个人网站?  如何在建站之星绑定自定义域名?  如何通过IIS搭建网站并配置访问权限?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何选购建站域名与空间?自助平台全解析  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何在IIS管理器中快速创建并配置网站?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  建站之星安装后如何自定义网站颜色与字体?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  如何在IIS服务器上快速部署高效网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站主机选哪种环境更利于SEO优化?  如何获取上海专业网站定制建站电话?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何生成腾讯云建站专用兑换码?  学校建站服务器如何选型才能满足性能需求?  建站之星下载版如何获取与安装?  平台云上自主建站:模板化设计与智能工具打造高效网站  建站之星好吗?新手能否轻松上手建站?  网站按钮制作软件,如何实现网页中按钮的自动点击?  怀化网站制作公司,怀化新生儿上户网上办理流程?  广东企业建站网站优化与SEO营销核心策略指南  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  建站之星安装后如何配置SEO及设计样式?  如何选择适配移动端的WAP自助建站平台?  建站之星备案是否影响网站上线时间?  制作网站怎么制作,*游戏网站怎么搭建?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  linux top下的 minerd 木马清除方法  网站网页制作专业公司,怎样制作自己的网页?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  临沂网站制作公司有哪些,临沂第四中学官网?  建站之星展会模版如何一键下载生成?  如何通过万网虚拟主机快速搭建网站?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何在建站宝盒中设置产品搜索功能? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。