欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年08月04日 09:02:43   作者:YSHY  
這篇文章主要介紹了ActiveMQ基于zookeeper的主從levelDB Master/Slave搭建,以及Spring-boot下的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

ActiveMQ 5.9.0新推出的主從實(shí)現(xiàn),基于zookeeper來選舉出一個(gè)master,其他節(jié)點(diǎn)自動(dòng)作為slave實(shí)時(shí)同步消息。因?yàn)橛袑?shí)時(shí)同步數(shù)據(jù)的slave的存在,master不用擔(dān)心數(shù)據(jù)丟失,所以leveldb會優(yōu)先采用內(nèi)存存儲消息,異步同步到磁盤,所以該方式的activeMQ讀寫性能最好因?yàn)檫x舉機(jī)制要超過半數(shù),所以最少需要3臺節(jié)點(diǎn),才能實(shí)現(xiàn)高可用。如果集群是兩臺則master失效后slave會不起作用,所以集群至少三臺。此種方式僅實(shí)現(xiàn)主備功能,避免單點(diǎn)故障,沒有負(fù)載均衡功能。

1、環(huán)境準(zhǔn)備

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復(fù)制一份為 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)創(chuàng)建/tmp/zookeeper目錄

在該目錄下創(chuàng)建名為myid的文件,內(nèi)容為1(這個(gè)值隨server而改變)

(4)將server1上的/home/wzh/zk/zookeeper-3.5.2-alpha文件夾復(fù)制到server2,server3,然后創(chuàng)建/tmp/zookeeper目錄

在該目錄下創(chuàng)建名為myid的文件,內(nèi)容為2

(5)啟動(dòng)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節(jié)點(diǎn)的brokerName設(shè)置為wzhamq

復(fù)制代碼 代碼如下:
<broker xmlns="

【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.復(fù)制到11,12機(jī)器

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)啟動(dòng)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$

依次啟動(dòng)192.168.3.11,192.168.3.12機(jī)器

4:集群管理

(1)通過使用ZooInspector工具查看zookeeper集群情況

(2)http://192.168.3.10:8161/admin/ 默認(rèn)用戶名與口令為admin登錄ActiveMQ管理端

5、通過Spring-boot操作ActiveMQ JMS

(1)通過gradle構(gòu)建Spring-boot應(yīng)用,在 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消息發(fā)送

@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收到的報(bào)文為:"+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)進(jìn)入ActiveMQ管理控制臺創(chuàng)建一個(gè)消息隊(duì)列

test.queue

(7)通過POSTMAN進(jìn)行測試

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收到的報(bào)文為: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收到的報(bào)文為:hello

(8)目前系統(tǒng)連接的是10,如果此時(shí)將10集群Down掉,系統(tǒng)會理解選擇一臺slave作為master提供服務(wù),從而啟動(dòng)案例主備的效果。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA整合SSM框架實(shí)現(xiàn)網(wǎng)頁上顯示數(shù)據(jù)

    IDEA整合SSM框架實(shí)現(xiàn)網(wǎng)頁上顯示數(shù)據(jù)

    最近做了個(gè)小項(xiàng)目,該項(xiàng)目包在intellij idea中實(shí)現(xiàn)了ssm框架的整合以及實(shí)現(xiàn)訪問,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • SpringBoot實(shí)現(xiàn)接口文檔自動(dòng)生成的方法示例

    SpringBoot實(shí)現(xiàn)接口文檔自動(dòng)生成的方法示例

    在開發(fā)Web應(yīng)用程序時(shí),接口文檔是非常重要的一環(huán),本文主要介紹了SpringBoot實(shí)現(xiàn)接口文檔自動(dòng)生成的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • dubbo新手學(xué)習(xí)之事件通知實(shí)踐教程

    dubbo新手學(xué)習(xí)之事件通知實(shí)踐教程

    這篇文章主要給大家介紹了關(guān)于dubbo新手學(xué)習(xí)之事件通知實(shí)踐的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SSM框架前后端信息交互實(shí)現(xiàn)流程詳解

    SSM框架前后端信息交互實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了SSM框架前后端信息交互實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 獲取Spring當(dāng)前配置的兩種方式

    獲取Spring當(dāng)前配置的兩種方式

    這篇文章主要給大家介紹了獲取Spring當(dāng)前配置的,兩種方式文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • idea批量啟動(dòng)多個(gè)微服務(wù)具體實(shí)現(xiàn)

    idea批量啟動(dòng)多個(gè)微服務(wù)具體實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于idea批量啟動(dòng)多個(gè)微服務(wù)的具體實(shí)現(xiàn),在微服務(wù)開發(fā)過程中,我們經(jīng)常要在本地啟動(dòng)很多個(gè)微服務(wù),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java發(fā)送https請求代碼實(shí)例

    Java發(fā)送https請求代碼實(shí)例

    這篇文章主要介紹了Java發(fā)送https請求代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java超詳細(xì)講解類的繼承

    Java超詳細(xì)講解類的繼承

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作
    2022-04-04
  • 一篇文章帶你深入了解Java基礎(chǔ)

    一篇文章帶你深入了解Java基礎(chǔ)

    這篇文章主要給大家介紹了關(guān)于Java中方法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 解析springBoot-actuator項(xiàng)目構(gòu)造中health端點(diǎn)工作原理

    解析springBoot-actuator項(xiàng)目構(gòu)造中health端點(diǎn)工作原理

    這篇文章主要介紹了springBoot-actuator中health端點(diǎn)工作原理,對spring-boot-actuator的項(xiàng)目構(gòu)造,工作原理進(jìn)行了全面的梳理,側(cè)重health健康檢查部分
    2022-02-02

最新評論