1、编写目的
介绍RocketMq的部署步骤、运行步骤和RocketMq接入接出的配置说明以及组件使用说明,主要应用于使用RocketMq进行消息发送以及消费的场景。
2、安装部署
2.1、硬件要求
Cpu8核、内存12g、硬盘1t 单机版要求可降低一半。
2.2、软件要求
1、Linux系统。
2、JDK1.8或更高版本 64位。
3、Maven 3.X --可不安装maven
2.3、安装部署
1、检查JDK版本,如果不是1.8 - 64位需要先安装JDK之后再进行下面步骤,如果是就继续后续步骤
输入命令
java -version
2、下载rocketmq
网址输入:http://mirrors.hust.edu.cn/apache/rocketmq
点击rocketmq-all-4.7.1-bin-release.zip 下载
2.3.1、单机版安装
1、配置hosts
-- 输入命令:
hostname
--Linux 7版本也可输入命令:
hostnamectl
2、修改配置文件,使用root权限修改
vi /etc/hosts
3、配置文件中输入服务器 IP 和上面查询到的服务器名称然后保存退出。
4、上传下载好的rocketMQ包到服务器
可创建一个新的文件夹存放rocketMQ,我是在根目录创建了一个data目录
mkdir data
5、解压rocketMQ包
输入命令:
unzip rocketmq-all-4.7.1-bin-release.zip
修改解压后的文件名,方便后续操作
输入命令:
mv rocketmq-all-4.7.1-bin-release rocketmq
6、创建文件夹
输入命令:
mkdir -p /data/store/commitlog
mkdir -p /data/rocketmq/store/commitlog
mkdir -p /data/rocketmq/store/consumequeue
mkdir -p /data/rocketmq/store/index
7、修改配置文件
输入命令:
vi /data/rocketmq/conf/2m-2s-async/broker-a.properties
将原有内容删除,将下面代码块复制进去,IP部分需要改成自己的服务器IP其余可根据自己需求更改也可已使用现在的。
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIP1=192.168.25.137
#nameServer地址,分号分割
namesrvAddr=192.168.25.137:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
复制进文件之后保存退出。
8、修改日志配置文件,为的是使我们可以更清晰的查看日志
mkdir -p /data/rocketmq/logs
cd /data/rocketmq/conf && sed -i 's#${user.home}#/data/rocketmq#g' *.xml
9、启动rocketMQ
先启动nameserver,后启动broker。
9.1、启动nameserver,命令如下:
cd /data/rocketmq/bin
nohup sh mqnamesrv &
查看启动日志,输入命令:
tail -f -n 500 /data/rocketmq/logs/rocketmqlogs/namesrv.log
9.2、启动broker,命令如下:
cd /data/rocketmq/bin
nohup sh mqbroker -c /data/rocketmq/conf/2m-2s-async/broker-a.properties &
查看启动日志,输入命令:
tail -f -n 500 /data/rocketmq/logs/rocketmqlogs/broker.log
10、使用命令模拟消息消费,可以看出是否可以正常消费
export NAMESRV_ADDR=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
2.3.2、集群模式安装
1、服务器-两台,部署双主双从
192.168.25.15 、192.168.25.16
分别进入192.168.25.15和192.168.25.16服务器。以下所有操作均是在两台服务器上进行的
2、配置hosts
获取服务器名称命令:
-- 输入命令:
hostname
--Linux 7版本也可输入命令:
hostnamectl
3、修改配置文件,使用root权限修改
--输入命令
vi /etc/hosts
修改配置文件:(192.168.25.15, 192.168.25.16两台服务器都修改)
4、上传下载好的rocketMQ包到服务器
可创建一个新的文件夹存放rocketMQ,我是在根目录创建了一个data目录,两台服务器都需要操作
mkdir data
两台服务器都上传
5、解压rocketMQ包,以下命令需根据对应的 IP服务器上执行
A主(192.168.25.15) 解压 - 输入命令:
cd /data
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release rocketmq
A从 (192.168.25.16) 解压 - 输入命令:
cd /data
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release rocketmq-s
B主(192.168.25.16) 解压 - 输入命令:
cd /data
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release rocketmq
B从 (192.168.25.15) 解压 - 输入命令:
cd /data
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release rocketmq-s
6、创建文件夹(两台服务器)
A 主 B主
mkdir -p /data/store/commitlog
mkdir -p /data/rocketmq/store/commitlog
mkdir -p /data/rocketmq/store/consumequeue
mkdir -p /data/rocketmq/store/index
A从 B从
mkdir -p /data/rocketmq-s/store/commitlog
mkdir -p /data/rocketmq-s/store/consumequeue
mkdir -p /data/rocketmq-s/store/index
7、修改MQ配置文件(两台机器),需在对应的服务器配置
A-master:( 192.168.25.15)
cd /data/rocketmq/conf/2m-2s-async/
vi broker-a.properties
将原有的内容删除,替换下面的配置
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIP1=192.168.25.15
#nameServer地址,分号分割
namesrvAddr=192.168.25.15:9876;192.168.25.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
B-slave:( 192.168.25.15)
cd /data/rocketmq-s/conf/2m-2s-async/
vi broker-b-s.properties
将原有的内容删除,替换下面的配置
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
brokerIP1=192.168.25.15
#nameServer地址,分号分割
namesrvAddr=192.168.25.15:9876;192.168.25.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10920
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-s/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq-s/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-s/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-s/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-s/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole= SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
B-master:( 192.168.25.16)
cd /data/rocketmq/conf/2m-2s-async/
vi broker-b.properties
将原有的内容删除,替换下面的配置
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
brokerIP1=192.168.25.16
#nameServer地址,分号分割
namesrvAddr=192.168.25.15:9876;192.168.25.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
A-slave:(192.168.25.16)
cd /data/rocketmq-s/conf/2m-2s-async/
vi broker-a-s.properties
将原有的内容删除,替换下面的配置
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
brokerIP1=192.168.25.16
#nameServer地址,分号分割
namesrvAddr=192.168.25.15:9876;192.168.25.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10920
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/data/rocketmq-s/store
#commitLog 存储路径
storePathCommitLog=/data/rocketmq-s/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/rocketmq-s/store/consumequeue
#消息索引存储路径
storePathIndex=/data/rocketmq-s/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/rocketmq-s/store/checkpoint
#abort 文件存储路径
abortFile=/data/rocketmq-s/store/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole= SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
8、修改日志配置文件
主
mkdir -p /data/rocketmq/logs
cd /data/rocketmq/conf && sed -i 's#${user.home}#/data/rocketmq#g' *.xml
从
mkdir -p /data/rocketmq-s/logs
cd /data/rocketmq-s/conf && sed -i 's#${user.home}#/data/rocketmq-s#g' *.xml
9、启动MQ(两台机器)
先启动nameserver,后启动broker。
启动nameserver,命令如下:
cd /data/rocketmq/bin
nohup sh mqnamesrv &
查看启动日志:
tail -f -n 500 /data/rocketmq/logs/rocketmqlogs/namesrv.log
启动broker,命令如下:
主
cd /data/rocketmq/bin;
从
cd /data/rocketmq-s/bin;
A-主
nohup sh mqbroker -c /data/rocketmq/conf/2m-2s-async/broker-a.properties &
A-从
nohup sh mqbroker -c /data/rocketmq-s/conf/2m-2s-async/broker-a-s.properties &
B-主
nohup sh mqbroker -c /data/rocketmq/conf/2m-2s-async/broker-b.properties &
B-从
nohup sh mqbroker -c /data/rocketmq-s/conf/2m-2s-async/broker-b-s.properties &
查看日志:
主
tail -f -n 500 /data/rocketmq/logs/rocketmqlogs/broker.log
从
tail -f -n 500 /data/rocketmq-s/logs/rocketmqlogs/broker.log
10、所有节点都启动完成之后输入下面命令看看集群是否正常
sh mqadmin clusterList -n 192.168.25.15:9876
查看集群的启动状况:四个节点,符合预期,至此,集群初版搭建完毕
2.4、MQ常用命令
1、以下命令都需要再rocketMQ的bin目录下执行
--查询集群消息,集群名称、broker名称、IP-端口、MQ版本等
sh mqadmin clusterList -n localhost:9876
--查看所有topic
sh mqadmin topicList -n localhost:9876
--查看所有消费组group
sh mqadmin consumerProgress -n localhost:9876
--增加消费者订阅组
sh mqadmin updateSubGroup -n localhost:9876 -c rocketmq-cluster -s true -d true -m true -g broker-user-prod
--查看消费者订阅组的信息堆积情况 -- Diff 为消息堆积数
sh mqadmin consumerProgress -n localhost:9876 -g broker-user-prod
--启动namesrv
nohup sh mqnamesrv &
--启动broker
nohup sh mqbroker -c /data/rocketmq/conf/2m-2s-async/broker-a.properties &
--停止MQ服务
sh mqshutdown namesrv
sh mqshutdown broker
--新增topic
sh mqadmin updateTopic –n localhost:9876 –c DefaultCluster –t topicWarning
--删除topic
sh mqadmin deleteTopic –n localhost:9876 –c DefaultCluster –t topicWarning