rocketmq
在上篇《消息队列选型》中我们通过对目前比较流行的各个MQ产品的对比,结合公司具体业务需求,选择了RocketMQ做为我们的消息中间件,这篇分享我们介绍一下RocketMQ的安装配置。
1、初步理解Producer/Consumer Group
在安装RocketMQ之前我们先来理解Group概念,在RocketMQ中Group是很重要的。通过Group机制,让RocketMQ天然的支持消息负载均衡!比如某个Topic有9条消息,其中一个Consumer Group有3个实例(3个进程 OR 3台机器),那么每个实例将均摊3条消息!(注意RocketMQ只有一种模式,即发布订阅模式。)如下图所示:
2、RocketMQ的集群部署模式:
在动手操作之前我们先来了解一下RocketMQ的集群部署模式都有哪些。RocketMQ在众多消息队列产品中高可用性是其亮点之一,其集群部署方式有很多种。比如单Master模式、多Master模式、多Master多Slave模式(异步复制)、多Master多Slave模式(同步双写)等。明确个概念,RocketMQ Slave不可以写,可以读,类似于MySQL的主从机制。
单Master模式:
无需多言,一旦单个broker重启或宕机,一切都结束了!很显然,线上不可以使用。
多Master模式:
全是Master,没有Slave。当然,一个broker宕机了,应用是无影响的,缺点在于宕机的Master上未被消费的消息在Master没有恢复之前不可以订阅。
多Master多Slave模式(异步复制):
多对Master-Slave,高可用!采用异步复制的方式,主备之间短暂延迟,MS级别。Master宕机,消费者可以从Slave上进行消费,不受影响,但是Master的宕机,会导致丢失掉极少量的消息。
多Master多Slave模式(同步双写):
和上面的区别点在于采用的是同步方式,也就是在Master/Slave都写成功的前提下,向应用返回成功,可见不论是数据,还是服务都没有单点,都非常可靠!缺点在于同步的性能比异步稍低。
3、RocketMQ单Master安装部署:
我们先安装一个Master,集群的话直接克隆已经安装好的节点,修改配置信息即可。
环境准备
²Centos7
²Jdk1.8
²Rocketmq4.2
²RocketMQ-Console
配置环境
如果是克隆机器的话,需要修改mac和ip:
查看网卡mac:
每次新克隆一台机器,就会新产生一个mac,由于是克隆的,在机器内部的配置文件还没有修改,所以要进行修改mac
修改操作如下:
不一样的就修改一下,不存在的就添加一个。
vi /etc/sysconfig/network-scripts/ifcfg-eno+**
service network restart
关闭firewall,以免在后续的操作过程中误伤自己,不同的机器可能有所不同,请百度处理。
如果系统自带OpenJdk,直接卸载。
查询安装的jdk rpm包rpm -qa | grep java
进行卸载rpm –ev
安装jdk
可以直接用系统命令下载安装包,也可以下载到本机后上传到服务器。
解压安装rpm -ivh文件名称
配置profile文件,文件末尾添加jdk的环境变量。
Jdk的安装步骤不是本文的重点,不清楚的麻烦自行百度。
安装rocketmq
可以在操作系统用wget直接下载,也可以在本机下载完后上传到服务器。
Wgethttp://mirrors.hust.edu.cn/apache/rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
RocketMQ已归属Apache开源项目,可以去apache官网下载。
解压unzip rocketmq-all-4.2.0-bin-release.zip
修改名称mvrocketmq-all-4.2.0 rocketmq
broker配置
broker配置感觉是在整个安装过程中最核心的东西了。配置项如下:
加载配置nohupshmqbroker -c broker.p&
1.nohup shmqbroker -c broker.p输入后:会显示:说明broker启动成功
2.这里我们配置了namesrvAddr是namesrv的地址,这个地址是在控制台(rocketmq-console)中的config.properties文件中中配置要一样。这样控制台才可以连接到namesev。
nameserver配置
启动
启动完成后jps会有NamesrvStartup和BrokerStartup两个java进程
注意:
小编尝试通过上面的步骤运行后,NamesrvStartup启动没有问题,但是BrokerStartup没有启动。需要通过nohupshmqbroker -c broker.p命令启动broker,效果如下,表示启动成功
如果没有问题,停止服务
4、控制台的使用rocketmq-console
Rocket-console做为rocketmq社区维护的产品需要从GitHub上下载,下载地址:https://github.com/apache/rocketmq-externals。下载下来后我们会发现有好多应用工程,这些全是rocketmq的外围支持系统,感兴趣的可以查看。我们需要的工程名是rocketmq-console。
打开src/main/resources/application.properties文件,修改配置:
rocketmq.config.namesrvAddr=192.168.11.114:9876 (rocketmq安装namesrv地址和端口)
进入rocketmq-console根目录,打开README.md文件,按照提示操作。Rocketmq-console的安装方式分为基于docker的安装和非docker安装。在测试环境中采用了非docker安装方式。
系统默认安装maven3以上版本,执行命令:mvn clean package -Dmaven.test.skip=true
进入target,将rocketmq-console-ng-1.0.0.jar上传到服务器执行:java–jarrocketmq-console-ng-1.0.0.jar&
在目录下生成out.log日志文件,查看启动成功。在浏览器中输入访问地址:http://192.168.11.114:8080
关注微信公众号和今日头条,精彩文章持续更新中。。。。。