RocketMQ环境搭建

与世无争的帅哥 提交于 2019-12-07 13:34:37

在上篇《消息队列选型》中我们通过对目前比较流行的各个MQ产品的对比,结合公司具体业务需求,选择了RocketMQ做为我们的消息中间件,这篇分享我们介绍一下RocketMQ的安装配置。

1、初步理解Producer/Consumer Group

在安装RocketMQ之前我们先来理解Group概念,在RocketMQ中Group是很重要的。通过Group机制,让RocketMQ天然的支持消息负载均衡!比如某个Topic有9条消息,其中一个Consumer Group有3个实例(3个进程 OR 3台机器),那么每个实例将均摊3条消息!(注意RocketMQ只有一种模式,即发布订阅模式。)如下图所示:

阿里消息队列使用

2RocketMQ的集群部署模式:

在动手操作之前我们先来了解一下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都写成功的前提下,向应用返回成功,可见不论是数据,还是服务都没有单点,都非常可靠!缺点在于同步的性能比异步稍低。

3RocketMQMaster安装部署:

我们先安装一个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

阿里消息队列使用

 

关注微信公众号和今日头条,精彩文章持续更新中。。。。。

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!