Activemq集群搭建
集群搭建
一:静态网络集群
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.切换说明
当master启动后,会自动在activemq中创建三个表
ACTIVEMQ_ACKS 为第三张表的外键连接
ACTIVEMQ_LOCK master锁定,保证只有一个master
ACTIVEMQ_MSGS 存储消息
优先读取到db的ACTIVEMQ_LOCK的为master
处于slave状态的Broker,服务端口(61616)和manage(6181)端口是没有启动的。
处于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集群搭建的更多相关文章
- Zookeeper+ActiveMQ集群搭建
搭建三台虚拟机安装centos7.要提前安装好jdk环境 1.环境准备,搭建三台虚拟机ip分别是 192.168.192.130 192.168.192.131 192.168.192.134 Zoo ...
- activeMQ集群搭建及高可用
三台服务器搭建如下的集群,达到了高可用.也同时达到了负载的目的: /****************************************************************** ...
- activemq集群搭建Demo
activemq5.14.5单节点安装Demo 第一步:创建集群目录 [root@node001 ~]# mkdir -p /usr/local/activemqCluster 复制单点至集群目录 [ ...
- ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡
ActiveMQ集群搭建好之后,接下来就该测试一下了. 一.先安装Zookeeper 的eclipse插件吧. 1. 打开 eclipse, Help -> Install New Softwa ...
- Zookeeper3.4.10 + ActiveMQ-5.15.0 集群搭建
网上的教程真的是凤毛麟角,就不想说啥了,一次一次把我带入坑. 好了关于Zookeeper的搭建已经说好了,本文说说基于Zookeeper的MQ集群. 第一步.将mq安装包上传到CentOS7,并解压 ...
- Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群
ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...
- JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用
1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是So ...
- 基于zookeeper+leveldb搭建activemq集群--转载
原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 ...
- Centos7上搭建activemq集群和zookeeper集群
Zookeeper集群的搭建 1.环境准备 Zookeeper版本:3.4.10. 三台服务器: IP 端口 通信端口 10.233.17.6 2181 2888,3888 10.233.17.7 2 ...
随机推荐
- selenium 执行js,实现滚动条
今天在写脚本的时候,学习了执行js,实现滚动条,对于scrollTop=10000中这个10000是怎么来的,还不是很了解,先将方法记录一下, 1.滚动条回到顶部: js_up="docum ...
- js代码大全(各种方法、属性)《转载》
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.sr ...
- svn搭建文档
1.制作本地yum源 a)挂载光盘 [root@localhost ~]# mount /dev/cdrom /mnt b)删除/etc/yum.repos.d目录所有的repo文件 [root@ ...
- Mysql主从原理
MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对mysql有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...
- Ubuntu 环境 TensorFlow (最新版1.4) 源码编译、安装
Ubuntu 环境 TensorFlow 源码编译安装 基于(Ubuntu 14.04LTS/Ubuntu 16.04LTS/) 一.编译环境 1) 安装 pip sudo apt-get insta ...
- JAVA IO分析一:File类、字节流、字符流、字节字符转换流
因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...
- Spring Cloud 前后端分离后引起的跨域访问解决方案
背景 Spring Cloud 微服务试点改造,目前在尝试前后端分离. 前台A应用(本机8080端口),通过网管(本机8769端口)调用后台应用B(本机8082端口).应用C发布的http服务.. A ...
- salesforce零基础学习(八十四)配置篇: 自定义你的home page layout
当我们进入salesforce系统或者切换app后,默认第一个看到的就是home页面.home页面简单的来说可以包括左侧(narrow component)和右侧(wide component)两部分 ...
- 实践作业3:白盒测试----我是如何写测试用例DAY6
一开始接到写白盒测试的任务,我感觉挺难的,因为感觉之前我所想到的都是黑盒测试啊,说到测试系统逻辑,感觉就有些神秘的样子没有思路了,那黑盒和白盒写的到底有啥区别.后来我请教了实验室的一个同学,他虽然还没 ...
- Solr集群搭建详细教程(一)
一.Solr集群的系统架构 注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. SolrCloud(solr 云)是So ...