集群搭建

一:静态网络集群

1.简介

​ 当ActiveMQ面对大量消息存储和大量Client交互时,性能消耗将会达到单个broker极限,此时我们需要对ActiveMQ进行水平扩展。ActiveMQ提供了“network”机制,可以把多个broker实例“串联”一起,形成“Forward Bridge”模型(转发桥)。这些Broker通过有向网络(networker Connector)链接在一起,组成broker集群,任何一个Borker都可以与Client数据交互,消息也将在Broker网络中“流动”直到被消费,之所以“流动”,因为“producer”和“consumer”会与不同的broker建立链接,我们认为“转发桥”架构模式是“较大”集群数据的解决方案。

2.拓扑图

3.配置示例

在activemq.xml配置文件中加入

<beans
<networkConnectors>
<networkConnector uri="static:(tcp://172.22.30.17:61616,tcp://172.22.30.18:61616)" duplex="true"/>
</networkConnectors>
<\beans
  • url 对端mq的连接地址,如果有多台,以","为分隔符
  • duplex true为双向订阅,两台mq之间互为消费者和生产者,如果为false,即配置主机为消费者,远端主机为生产者

二:主从集群

1.简介

​ 在master-slave模式中,消息将会在多个broker上备份,即集群中每个broker上消息都一样,在故障转移时不会发生消息丢失的问题(持久化消息)。

2.拓扑图

目前mq支持三种持久化方式,如下:

  • kahadb:以本地的数据库形式存储,速度没有AMQ快,扩展性好,目前mq默认的持久化方式。
  • AMQ:文件存储方式,写入速度快和容易恢复,默认文件大小为32M,5.3版本以前默认支持。
  • JDBC:使用外置数据库的形式存储消息。

特性对比:

  • AMQ/kahadb:读写性能一般
  • jdbc:受限于数据库性能,也比较一般
  • zookeeper:性能比较好

3.配置示例

修改activemq.xml文件,更改kahadb持久化方式为mysql

修改activemq.xml文件,更改kahadb持久化方式为mysql
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#mysql-ds" useDatabaseLock="true"/>
<!--
<kahaDB directory="${activemq.data}/kahadb"/>
-->
</persistenceAdapter>

修改activemq,在后添加数据库连接信息

<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.30.130:3306/activemq?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="p3temp_S"/>
<property name="poolPreparedStatements" value="true"/>
</bean>

4.切换说明

  1. 当master启动后,会自动在activemq中创建三个表

    ACTIVEMQ_ACKS	为第三张表的外键连接
    ACTIVEMQ_LOCK master锁定,保证只有一个master
    ACTIVEMQ_MSGS 存储消息
  2. 优先读取到db的ACTIVEMQ_LOCK的为master

  3. 处于slave状态的Broker,服务端口(61616)和manage(6181)端口是没有启动的。

  4. 处于slave状态的Broker,会定时去读取MySQL,如果发现已经被锁了,则继续等待

    2018-01-03 11:10:53,698 | INFO  | Failed to acquire lock.  Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main
    2018-01-03 11:11:45,715 | INFO | Failed to acquire lock. Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main
    2018-01-03 11:12:37,735 | INFO | Failed to acquire lock. Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main
    2018-01-03 11:13:29,751 | INFO | Failed to acquire lock. Sleeping for 1000 milli(s) before trying again... | org.apache.activemq.store.jdbc.DefaultDatabaseLocker | main

三:客户端

1.连接url说明

failover:(tcp://local:61616,tcp://remote:61616)?randomize=false&priorityBackup=true
  • failover:连接地址池为多个,以","号为分隔符,当其中一个失效后,会自动切换
  • randomize:false关闭随机选择
  • priorityBackup:当randomize为false时,pri为true时,会默认为第一个为优先
  • timeout:超时时间

Activemq集群搭建的更多相关文章

  1. Zookeeper+ActiveMQ集群搭建

    搭建三台虚拟机安装centos7.要提前安装好jdk环境 1.环境准备,搭建三台虚拟机ip分别是 192.168.192.130 192.168.192.131 192.168.192.134 Zoo ...

  2. activeMQ集群搭建及高可用

    三台服务器搭建如下的集群,达到了高可用.也同时达到了负载的目的: /****************************************************************** ...

  3. activemq集群搭建Demo

    activemq5.14.5单节点安装Demo 第一步:创建集群目录 [root@node001 ~]# mkdir -p /usr/local/activemqCluster 复制单点至集群目录 [ ...

  4. ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡

    ActiveMQ集群搭建好之后,接下来就该测试一下了. 一.先安装Zookeeper 的eclipse插件吧. 1. 打开 eclipse, Help -> Install New Softwa ...

  5. Zookeeper3.4.10 + ActiveMQ-5.15.0 集群搭建

    网上的教程真的是凤毛麟角,就不想说啥了,一次一次把我带入坑. 好了关于Zookeeper的搭建已经说好了,本文说说基于Zookeeper的MQ集群. 第一步.将mq安装包上传到CentOS7,并解压 ...

  6. Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群

    ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...

  7. JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

    1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是So ...

  8. 基于zookeeper+leveldb搭建activemq集群--转载

    原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 ...

  9. Centos7上搭建activemq集群和zookeeper集群

    Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...

随机推荐

  1. 使用docker搭建Jenkins 及slave的配置

    安装Jenkins 使用docker docker run -d -p 8080:8080 -p 50000:50000 -v /opt/jenkins_home:/var/jenkins_home ...

  2. leecode -- 3sum Closet

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...

  3. How to support comparators in our sort implementations?

    上图是普林斯顿算法课part1.Mergesort章节给出的参考代码,可以发现这个代码有三处警告.造成的隐患就是我们无法在类型检查时发现送入sort()函数的数组元素类型和Comparator的泛型不 ...

  4. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  5. XMPP学习及使用1

    XMPP 简单介绍 本小节将简要介绍 XMPP,它的起源.以及为何它是一个适合实时 web 通信的协议.您将检查 XMPP 通信设置的组件,并查看展示这些组件怎样使用的演示样例. Web 标准和 XM ...

  6. Swift 是猴还是猿?

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:段义鹏 导语 Swift和Objective-C是目前开发 Apple App的两门主要语言.Swift自2014年发布到目前为止其行业 ...

  7. Java项目中使用Redis缓存案例

    缓存的目的是为了提高系统的性能,缓存中的数据主要有两种: 1.热点数据.我们将经常访问到的数据放在缓存中,降低数据库I/O,同时因为缓存的数据的高速查询,加快整个系统的响应速度,也在一定程度上提高并发 ...

  8. .net core中使用GB2312编码的问题

    最近在用.net core写一个爬虫抓取网页上的数据,碰到了网页编码是GBK的页面,抓取的数据都是乱码,当使用Encoding.GetEncoding("GBK")的时候抛出了异常 ...

  9. AJAX扩展-POST传递参数并跳转页面

    拓展的代码: 这段代码的原理是创建一个表单,所有args都创建一个隐藏的input,用post方法把这些参数传递过去 注意form表单一定要加载到页面中,即下面代码中标红的部分,不然参数是无法被传递的 ...

  10. intellij idea的安装步骤---经典

    安装IntelliJ IDEA 一.安装JDK 1 下载最新的jdk,这里下的是jdk-8u66 2 将jdk安装到默认的路径C:\Program Files\Java目录下 二.安装IntelliJ ...