从入门到精通的activemq

ch-ao-chao ch-ao-chao     2023-03-31     230

关键词:

这是ActiveMQ系列的最后一篇文章,主要是关于ActiveMQ集群,这里采用的方式是:Zookeeper+LevelDB+ActiveMQ。前面2篇博客地址如下:《从入门到精通的ActiveMQ(一)》、《从入门到精通的ActiveMQ(二)》。

利用Zookeeper实现ActiveMQ的高可用

话不多说,先来看一张ActiveMQ官方提供的架构图:

技术图片

 

Zookeeper + ActiveMQ

Master/Slave broker的信息要注册到ZK

注意到只有Master对外提供了服务,Slave是待机状态。当Master出现故障,ZK内部的选举机制,会让一个Slave升级成Master对外提供服务。

关于ZK,以后博主会有专题进行介绍,这里不做详细讲解,只需要了解通过ZK的协调、选举、容错机制等会实现ActiveMQ的高可用。

既然要做到高可用,那么ZK也得是高可用的,所以这里的搭建方案是这样的:

技术图片

 

搭建方案

第一步:JDK环境

技术图片

 

jdk环境

保证这3台机器都安装了JDK,并配置了JAVA环境变量。

第二步:配置Zookeeper

技术图片

 

zk环境变量

为什么要配置ZK环境变量呢?很简单,我想在命令行下直接使用ZK相关的命令,而不是进入到安装ZK目录下的bin,更不想用绝对路径。

 

技术图片

 

zoo.cfg

注意dataDir目录的指定;注意2181是外部访问ZK的端口;

2888:3888是ZK集群内部通信(比如ZK原子广播消息)的端口,注意server.X的定义,这是将ZK集群中的实例进行编号,实际上需要在dataDir目录中新建myid文件,并与之保持一致。

技术图片

 

myid文件

第三步:启动ZK

技术图片

 

zkServer start

可以通过netstat命令查看2722进程,发现ZK的端口是2181,这和zoo.cfg的配置是一致的。让3台机器的ZK都启动起来。

 

技术图片

 

zk status

 

第四步:ActiveMQ主从配置

注意了,由于我将在3台物理机上搭建一台Master,2台Slave,因此我这边不需要对端口配置文件进行改动。比如WEB管控台的jetty.xml。

 

技术图片

 

activemq.xml:brokerName

3台机器应该对外只有一个统一的名称,就是这个brokerName。3台机器都修改成一个名称即可。

这里持久化,我将采用LevelDB,因此需要修改持久化配置:

技术图片

 

leveldb

注意bind地址,其实是ActiveMQ集群内部通信的TCP端口,和ActiveMQ对外提供的消息端口(默认61616)不要搞混了。

hostname即本机的主机名称。

给出ZK集群的列表以及zkPath。zkPath下面其实存放着ActiveMQ的节点,在后续你会看到。

启动3台机器上的ActiveMQ,然后利用ZooInspector你可以看到:

技术图片

 

121节点是Master

此时此刻,基于ZK的ActiveMQ的高可用方案就做好了。那么JAVA端访问ActiveMQ有什么变化么?其实就是在创建ConnectionFactory的时候给定的URL有变化:

failover:(tcp://192.168.99.121:61616,tcp://192.168.99.122:61616,tcp://192.168.99.123:61616)?Randomize=false

就是一个失败转移协议!

上面只是做了一个ActiveMQ的高可用方案,那么ActiveMQ集群呢?其实所谓的ActiveMQ集群就是多个ActiveMQ高可用之间产生关联:

技术图片

 

ActiveMQ集群

高可用的ActiveMQ-1,ActiveMQ-2,...,ActiveMQ-N就可以组建ActiveMQ集群

在配置上很简单,其实就是ActiveMQ-1要知道ActiveMQ-2的信息而已,这里大家可以自行百度,不在演示了。

整个ActiveMQ从入门到精通系列就结束了,希望对大家有帮助!我们RocketMQ系列再见~

从入门到精通的activemq

这是ActiveMQ系列的最后一篇文章,主要是关于ActiveMQ集群,这里采用的方式是:Zookeeper+LevelDB+ActiveMQ。前面2篇博客地址如下:《从入门到精通的ActiveMQ(一)》、《从入门到精通的ActiveMQ(二)》。利用Zookeeper实现ActiveMQ的高可用... 查看详情

从入门到精通activemq

接上一篇《从入门到精通ActiveMQ(一)》,本篇主要讨论的话题是:消息的顺序消费、JMSSelectors、消息的同步/异步接受方式、Message、P2P/PubSub、持久化订阅、持久化消息到MySQL以及与Spring整合等知识。消息的顺序消费在上一篇文... 查看详情

从入门到精通activemq

接上一篇《从入门到精通ActiveMQ(一)》,本篇主要讨论的话题是:消息的顺序消费、JMSSelectors、消息的同步/异步接受方式、Message、P2P/PubSub、持久化订阅、持久化消息到MySQL以及与Spring整合等知识。消息的顺序消费在上一篇文... 查看详情

从入门到精通的activemq

这是关于消息中间件ActiveMQ的一个系列专题文章,将涵盖JMS、ActiveMQ的初步入门及API详细使用、两种经典的消息模式(PTPandPub/Sub)、与Spring整合、ActiveMQ集群、监控与配置优化等。话不多说,我们来一起瞧一瞧!JMS首先来说较早... 查看详情

es6从入门到精通系列学习笔记23篇(完结)

说明ES6从入门到精通系列(全23讲)学习笔记。可以自行搜索B站,有小马哥的视频学习。目录ES6从入门到精通#01:ES6介绍ES6从入门到精通#02:let和const命令ES6从入门到精通#03:模板字符串ES6从入门到精通#04&... 查看详情

wpfmvvm从入门到精通3:数据绑定

原文:WPFMVVM从入门到精通3:数据绑定 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的绑... 查看详情

oracle从入门到精通系列讲解-总目录(代码片段)

总目录欢迎大家来到Lucifer三思而后行的《Oracle从入门到精通系列》,开始前博主先列出Oracle学习的大纲,同时这也可以作为大家学习Oracle的参考。下面蓝字都是传送门,点击进入即可:学前必读Oracle从入门到精通... 查看详情

wpfmvvm从入门到精通8:数据验证(代码片段)

原文:WPFMVVM从入门到精通8:数据验证 WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的绑... 查看详情

用python2.7编的小游戏

...到了相关教程。自己用google搜:用Python和Pygame写游戏-从入门到精通(目录)就可以找到了。其是一系列的帖子:系统学习部分用Python和Pygame写游戏-从入门到精通(1)Pygame的历史,安装Pygame,第一个Pygame脚本用Python和Pygame写游戏... 查看详情

wpfmvvm从入门到精通7:关闭窗口和打开新窗口

原文:WPFMVVM从入门到精通7:关闭窗口和打开新窗口 WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:... 查看详情

wpfmvvm从入门到精通4:命令和事件(代码片段)

原文:WPFMVVM从入门到精通4:命令和事件 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的... 查看详情

wpfmvvm从入门到精通6:radiobutton等一对多控件的绑定(代码片段)

原文:WPFMVVM从入门到精通6:RadioButton等一对多控件的绑定 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到... 查看详情

《wireshark从入门到精通》

 视频选集3/20P1wireshark从入门到精通P2wireshark入门到精通2P3wireshark入门到精通3P4wireshark入门到精通4P5wireshark入门到精通5P6wireshark入门到精通6P7wireshark入门到精通7P8wireshark入门到精通8P9wireshark入门到精通9P10wireshark入门到精通10P11w... 查看详情

charles从入门到精通

Charles从入门到精通 发表于2015-11-1412:00文章目录1. 目录2. 简介3. 安装Charles4. 将Charles设置成系统代理5. Charles主界面介绍6. 过滤网络请求7. 截取iPhone上的网络封包7.1. Charles上的设置7.2. iPhone上的... 查看详情

cuda从入门到精通

CUDA从入门到精通转载 2013年10月17日11:22:30115411CUDA从入门到精通(零):写在前面 在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基... 查看详情

javascript从入门到精通

1.heap:堆引用值stack:栈先进后出里面的值是copy的关系不可改变的原始值:NumberStringBooleanundefinednullstack引用值:arrayObjectfunction...dateRegExp(正则)heapvararr=[1,2];vararr1=arr;arr.push(3);console.log(arr1);==>1,2,3vararr=[1, 查看详情

python从入门到精通—初识python(代码片段)

Python从入门到精通—初识PythonPython基础知识学习系列博客,持续更新Python从入门到精通—初识PythonPython从入门到精通—初识Python1、Python简介2、认识"Python"3、Python版本4、Python的功能5、Python语言优点6、Python语言缺点1、Py... 查看详情

python从入门到精通—初识python(代码片段)

Python从入门到精通—初识PythonPython基础知识学习系列博客,持续更新Python从入门到精通—初识PythonPython从入门到精通—初识Python1、Python简介2、认识"Python"3、Python版本4、Python的功能5、Python语言优点6、Python语言缺点1、Py... 查看详情