Bootstrap

RocketMQ的安装与部署(最详细)

1、RocketMQ快速实战

RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。

目前RocketMQ在阿里云上有一个购买即可用的商业版本,商业版本集成了阿里内部一些更深层次的功能及运维定制。我们这里学习的是Apache的开源版本。开源版本相对于阿里云上的商业版本,功能上略有缺失,但是大体上功能是一样的。

 

RocketMQ的官网地址: http://rocketmq.apache.org

github地址是 GitHub - apache/rocketmq: Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.

 

1.1 下载RocketMQ

根据Spring Cloud Alibaba 版本说明,我们使用的Spring Cloud Alibaba版本是2021.0.5.0,所以下载的RocketMQ Version定在4.9.4

 

592993ab04db1a8fba75d17bb01c5d99.png

 

RocketMQ下载地址:

下载 | RocketMQ

 

1ef51188cc97c415710cccfa183557d6.png

 

1.2 安装RocketMQ

RocketMQ的安装非常简单

安装环境:CentOS7

注意:运行RocketMQ需要先安装JDK。我们采用目前最稳定的JDK1.8版本,确保你的Linux已经安装了JDK

 

安装RocketMQ

1、创建rocketmq目录

mkdir -p /usr/local/rocketmq/

2、把下载的rocketmq-all-4.9.4-bin-release.zip在本地完成解压,并上传到/usr/local/rocketmq/目录

 

3、配置环境变量

注意:

这个ROCKETMQ_HOME的环境变量是必须要单独配置的,如果不配置的话,启动NameSever和Broker都会报错。

 

vim /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_361
export ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.9.4-bin-release
export PATH=$PATH:$JAVA_HOME/bin:$ROCKETMQ_HOME/bin:/usr/local/mysql/bin

执行source /etc/profile让环境变量生效

这样RocketMQ就安装完成了

 

21d5298e79a3e036809e9074276c4453.png

 

1.3 运行RocketMQ

运行之前,我们先对RocketMQ的组件结构有个大致的了解。

RocketMQ由以下这几个组件组成

  • NameServer : 提供轻量级的Broker路由服务。
  • Broker:实际处理消息存储、转发的核心组件。
  • Producer:消息生产者集群。通常是业务系统中的一个功能模块。
  • Consumer:消息消费者集群。通常也是业务系统中的一个功能模块。

所以我们要启动RocketMQ服务,需要先启动NameServer。

 

cf41c96fcec431edd50eca07eae579a6.png

 

 

1.3.1 启动NameServer

启动NameServer非常简单, 在$ROCKETMQ_HOME/bin目录下有个mqnamesrv。

直接执行这个脚本就可以启动RocketMQ的NameServer服务。

但是要注意,RocketMQ默认预设的JVM内存是4G,这是RocketMQ给我们的最佳配置。但是通常我们的虚拟机内存都是不够4G内存的,所以需要调整下JVM内存大小。

修改的方式是直接修改runserver.sh(71行)

用vi runserver.sh编辑这个脚本,在脚本中找到这一行调整内存大小为512M

 

fbfded9d0c74d383759bc70394ac98e4.png

 

然后用静默启动的方式启动NameServer服务:

nohup mqnamesrv &

#查看NamesrvStartup进程
jps

发现没有执行权限

 

01cc86b059375610a72cad4c33923a14.png

 

加执行权限

chmod -R +x /usr/local/rocketmq/rocketmq-all-4.9.4-bin-release/bin

 

56aa82f2c253eb2eff821bb606697b07.png

 

启动完成后,在执行nohup mqnamesrv & 的当前目录下会生成一个nohup.out文件,里面可以看到这一条关键日志就是启动成功了。

并且使用jps指令可以看到有一个NamesrvStartup进程。

 

fc1c51aad768838ba4650d086969feb6.png

 

 

查看Namesrv进程:

jps

 

18e815bba6b219609101dda758a17508.png

 

注意:

Namesrv服务占用的端口是:9876

 

 

1.3.2 启动Broker

启动Broker的脚本是runbroker.sh。Broker的默认预设内存是8G,启动前,如果内存不够,同样需要调整下JVM内存。vi runbroker.sh(),找到这一行(85行),进行内存调整

 

037fe69d5d923b9bddb36413e98b2a0f.png

 

然后我们需要找到$ROCKETMQ_HOME/conf/broker.conf, vi指令进行编辑,在最下面加入一个配置:

autoCreateTopicEnable=true

 

df1432247fbee7ae34d0bcf6a427feea.png

 

然后也以静默启动的方式启动broker服务

nohup mqbroker -n localhost:9876 &

注意:

broker服务占用的端口是:10911

 

启动完成后,同样是检查nohup.out日志,有这一条关键日志就标识启动成功了。 并且jps指令可以看到一个BrokerStartup进程。

 

9f855fc113fed5515fca550a4c4faaba.png

 

1.3.3 关闭RocketMQ服务

要关闭RocketMQ服务可以通过mqshutdown脚本直接关闭

# 1.关闭NameServer
sh mqshutdown namesrv
# 2.关闭Broker
sh mqshutdown broker

 

 

 

 

;