- 本人电脑配置及准备步骤
Windows系统:Windows10家庭版
RocketMQ版本:4.9.1(2021.10.14最新版本)
JDK版本:jdk8u302-b01(阿里系列,最新国产JDK)
JDK下载地址:
Maven版本:3.6.3(尽量使用3.5以上版本的Maven),打包java文件使用
RocketMQ下载地址:
https://dlcdn.apache.org/rocketmq/4.9.1/rocketmq-all-4.9.1-bin-release.zip
RocketMQ源码下载:
https://dlcdn.apache.org/rocketmq/4.9.1/rocketmq-all-4.9.1-source-release.zip
RocketMQ可视化插件下载:由于本人在git里没有rocketmq-console文件夹,从网盘里下载:
百度网盘链接:https://pan.baidu.com/s/1sMO6W-562IFJF1uUBQFXYg
提取码:fuzy
Nginx下载:
下载地址:http://nginx.org/en/download.html
选择版本:nginx/Windows-1.20.1(稳定版本)
注:
Jdk只要是1.8版本即可,无需担心是jdk还是openjdk
插件只需要rocketmq-console对应的maven项目。
- 安装步骤
2.1 配置环境变量
将下载好的RocketMQ解压(位置根据个人喜好)
在系统变量中配置RocketMQ
变量名:ROCKETMQ_HOME
变量值:MQ解压路径\MQ文件夹名
![](https://img-blog.csdnimg.cn/img_convert/3eef1c9e1b1f050408a50c5601c6b479.png)
2.2 配置集群
进入RocketMQ的conf目录,可以看到2m-2s-async(两主两从异步)、2m-2s-sync(两主两从同步)两个文件夹。因为要修改配置文件,选择哪个都一样。本人修改2m-2s-async目录下的配置文件。
集群种类:
Master:主节点,生产消息及消费消息的节点。
Slave:从节点。
单master、多master、多master多slave(同步)、多master多slave(异步)
搭建集群配置(根据需要选择其中一种配置即可):
2.2.1 四主(多master)
修改broker-a.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10911
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用配置的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
修改broker-a-s.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a-s
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10811
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
修改broker-b.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10711
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\broker-b\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
修改broker-b-s.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
brokerName=broker-b-s
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10611
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\broker-b-s\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
2.2.2 主从替换(异步的多master多slave)
(1) 修改broker-a.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口,
listenPort=10911
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
# 与 dledger 相关的属性
enableDLegerCommitLog=true
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a\\dledger_store
dLegerGroup=broker-a
dLegerPeers=n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913
dLegerSelfId=n0
(2) 修改broker-a-s.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口,
listenPort=10811
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
# 与 dledger 相关的属性
enableDLegerCommitLog=true
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-s\\dledger_store
dLegerGroup=broker-a
dLegerPeers=n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913
dLegerSelfId=n1
(3)添加broker-a-ss.properties
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口,
listenPort=10711
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-ss
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-ss\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-ss\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-ss\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
# 与 dledger 相关的属性
enableDLegerCommitLog=true
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-a-ss\\dledger_store
dLegerGroup=broker-a
dLegerPeers=n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913
dLegerSelfId=n2
(4)修改broker-b.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10611
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
# 与 dledger 相关的属性
enableDLegerCommitLog=true
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b\\dledger_store
dLegerGroup=broker-b
dLegerPeers=n3-127.0.0.1:40914;n4-127.0.0.1:40915;n5-127.0.0.1:40916
dLegerSelfId=n3
(5)修改broker-b-s.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10511
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
# 与 dledger 相关的属性
enableDLegerCommitLog=true
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-s\\dledger_store
dLegerGroup=broker-b
dLegerPeers=n3-127.0.0.1:40914;n4-127.0.0.1:40915;n5-127.0.0.1:40916
dLegerSelfId=n4
(6)修改broker-b-s.properties内容
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10411
# 返回broker的ip,默认为此文件所在的ip,添加时强制使用对应的ip,适合nginx代理broker节点
# brokerIP1=172.18.12.40
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-ss
#commitLog 存储路径
storePathCommitLog=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-ss\\commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-ss\\consumequeue
#消息索引存储路径
storePathIndex=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-ss\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\checkpoint
#abort 文件存储路径
abortFile=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
# 与 dledger 相关的属性
enableDLegerCommitLog=true
storePathRootDir=D:\\dev\\rocketmq-all-4.9.1-bin-release\\rocketmq-all-4.9.1-bin-release\\store\\broker-b-ss\\dledger_store
dLegerGroup=broker-b
dLegerPeers=n3-127.0.0.1:40914;n4-127.0.0.1:40915;n5-127.0.0.1:40916
dLegerSelfId=n5
2.2.3 新建nameserver-a.properties
listenPort=9876
2.3 配置namesrv和broker
由于RocketMQ默认情况下启动namesrv和broker都是需要大量内存(单位GB),需要将内存改小(根据个人电脑配置决定修改大小)
进入解压好的RocketMQ的bin目录,分别修改runserver.cmd和runbroker.cmd两个配置文件。
runserver.cmd
由29行参数可以看到,启动namesrv的内存为2GB,本人改为以下参数。
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn126m -XX:PermSize=128m -XX:MaxPermSize=320m"
![](https://img-blog.csdnimg.cn/img_convert/97de0a96b82990c609cfafe736978117.png)
runbroker.cmd
同理,修改broker存储在31行。
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m"
![](https://img-blog.csdnimg.cn/img_convert/baedd4c495d852f63faf3340d8007ddc.png)
2.4 启动集群
确保进入RocketMQ的bin目录,按配置的broker启动多个cmd命令(broker配置文件数+namesrv),命令执行成功后不要关闭cmd窗口,切换新的窗口启动下一个命令。
2.4.1 启动与关闭顺序
启动
启动mqnamesrv
启动mqbroker
关闭
关闭所有mqbroker
关闭mqnamesrv
2.4.2 启动命令(cmd)
启动mqnamesrv
mqnamesrv.cmd -c 你的配置文件所在位置/nameserver-a.properties
启动 mqbroker,启动配置的broker文件
mqbroker.cmd -c 你的配置文件所在位置/broker-a.properties
mqbroker.cmd -c 你的配置文件所在位置/broker-b.properties
mqbroker.cmd -c 你的配置文件所在位置/broker-a-s.properties
mqbroker.cmd -c 你的配置文件所在位置/broker-b-s.properties
mqbroker.cmd -c 你的配置文件所在位置/broker-a-ss.properties
mqbroker.cmd -c 你的配置文件所在位置/broker-b-ss.properties
mqnamesrv.cmd代码执行成功如图所示:
![](https://img-blog.csdnimg.cn/img_convert/19842d3de068c34739d418139eac8653.png)
mqbroker.cmd代码执行成功如图所示:
![](https://img-blog.csdnimg.cn/img_convert/dc0ead88de14a6f55aef3f6c518f855d.png)
2.5 安装及使用rocketmq-console(可视化插件)
2.5.1 配置
解压RocketMQ插件(整个项目只需要rocketmq-console项目),进入此项目的\rocketmq-console\src\main\resources目录,修改application.properties文件
# 插件使用的端口
server.port=8088
# 通过namesrv的位置,知道集群数量、ip与端口
rocketmq.config.namesrvAddr=localhost:9876
![](https://img-blog.csdnimg.cn/img_convert/bac6cf1bedd5b7bf711c7d9eb7642778.png)
2.5.2 打包
回到/rocketmq-console目录,用cmd命令将插件打包
mvn clean install -Dmaven.test.skip=true
2.5.3 启动
进入/rocketmq-console/target目录,用cmd命令启动jar包(也不要关闭cmd窗口,jar包后缀不一定是-1.0.1.jar)
java -jar rocketmq-console-ng-1.0.1.jar
2.5.4 查看
启动成功后用网页打开,端口号为配置插件的application.properties文件时修改的端口号;在页面的cluster目录下查看集群信息(根据不同电脑配置可能会需要一些时间等响应)。页面右上角可以将大部分语言改成中文。
http://127.0.0.1:8088/
![](https://img-blog.csdnimg.cn/img_convert/3c9692cffa26f4717a08960ca84e0be9.png)
2.5.5添加主题
点击页面topic(主题),此时搭建的集群没有任何主题(第一次搭建、启动,默认添加主题未开启),需要手动添加,点击ADD/UPDATE(添加/更新),会出现配置主题页面(可能需要等会才加载出来)。添加所属集群、broker、主题名称,点击COMMIT(提交)即可。
所属集群、broker_name右侧都是对应的都是下拉框,broker_name的可以重复选择。
配置好所属集群名称,可以不用配置broker,主题会根据名称找到集群下所有broker。
再次点击ADD/UPDATE(添加/修改),会根据所属集群修改主题,而不是在这个集群中再次添加一个主题。
![](https://img-blog.csdnimg.cn/img_convert/897cc66dc9210637c2dfcd8a02d82b2f.png)
2.5.6 添加消费者
点击页面Consumer(消费者),会看到很多消费者,都是系统内部使用的。刚刚创建好主题无法使用这些消费者,需要手动创建消费者。创建过程和创建主题一样。
consumeBroadcastEnable:是否广播。将其点成否
广播模式:不管是谁生产的数据,所有的消费者都消费一遍(有1000条数据,生产者负载均衡,但每个消费者都消费这1000条)
右下角COMMIT在定义好所属集群、主题名称后才能点击。
BrokerId:0代表master(主),默认为0(修改无效,无需在意)。
![](https://img-blog.csdnimg.cn/img_convert/712c43f3369a25c30468bb567f7270a7.png)
2.6 修改日志存储路径
(除了rocketmq的rocketmq-client.log以外有效,暂未找到解决办法)
启动集群和可视化插件后,会在C盘user.home(C:/User/admin(系统当前用户))的logs目录下存放,会很容易将系统盘写满。
进入RocketMQ的bin目录,在tools.cmd、runserver.cmd和runbroker.cmd三个配置文件里添加user.home路径(使相关配置文件不在存储到C:/User/admin)。
set "JAVA_OPT=%JAVA_OPT% -Duser.home=日志存储路径"
![](https://img-blog.csdnimg.cn/img_convert/1497c26bfcb243cdfdea866c7d6410cd.png)
进入RocketMQ的conf目录,修改以下三个xml文件
![](https://img-blog.csdnimg.cn/img_convert/23c93db7874334818c1bf06f17937943.png)
三个xml文件都是添加property标签(名称任意,路径真实存在即可),将文件内所有的user.home替换为property标签name对应的名称(截图显示不全)。修改好启动集群即可。
![](https://img-blog.csdnimg.cn/img_convert/a523430e0660c328858af8067f403e89.png)
修改可视化插件日志存储路径:进入可视化插件(rocketmq-console)的src\main\resources目录,修改logback.xml文件
![](https://img-blog.csdnimg.cn/img_convert/948f99daba68ae7f4f0f5d5999e91cdf.png)
将11行和14行的${user.home}修改(按个人需求修改,真实存在的路径即可)。修改好后重新打包启动即可。
![](https://img-blog.csdnimg.cn/img_convert/0d649f9e2053e1aa182497277615ea14.png)
2.7 NGINX代理
解压。
将下载好的nginx根据个人喜好解压。进入nginx的conf目录,打开nginx.conf文件
![](https://img-blog.csdnimg.cn/img_convert/6eaf4bfc72d6784cb6a2a1e3387a87d6.png)
配置。
修改http模块的server中listen对应的端口号(根据个人喜好进行修改,不要与其他进程抢占端口)
![](https://img-blog.csdnimg.cn/img_convert/db8ff1ad13dfa64de09d86ae1925020b.png)
配置好后回到nginx目录开启cmd命令窗口,输入start nginx.exe ,会看到nginx一闪而过,并且没有任何提示,这时nginx就开启了,任务管理器可能会查看到(本人电脑未看到nginx启动的进程)。在网页输入127.0.0.1:8081,会看到nginx欢迎界面,证明windows部署nginx成功。
![](https://img-blog.csdnimg.cn/img_convert/abbb8241b0a61b0721c2f832d92e42ba.png)
![](https://img-blog.csdnimg.cn/img_convert/d8935f4cbd2b3193bc67c4c7b5dad323.png)
错误情况。
如果没有出现欢迎界面,看一下/logs/error.log文件下错误内容。
![](https://img-blog.csdnimg.cn/img_convert/29b15bddcc5cf1a76f738868dc0231e6.png)
![](https://img-blog.csdnimg.cn/img_convert/ebc7c7e157006f3be96ae61b92487c96.png)
代理。
部署成功后,修改/conf/nginx.conf配置文件。添加stream{}代码块(stream代码块和events、http两个代码块属于同级),proxy_pass对应的是集群nameServer地址(namesrvAddr=127.0.0.1:9876);listen为跳转的端口,由于集群占用了9876端口,listen不能再使用9876,否则nginx或mqnamesrv会出现端口占用的情况。
stream {
server {
listen 9877;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass 192.168.221.100:9876;
}
}
![](https://img-blog.csdnimg.cn/img_convert/b916762afa5a43b84bfa429303933814.png)
在nginx目录使用cmd命令重新加载nginx
nginx -s reload
利用可视化工具查看nginx是否桥接rocketmq
进入可视化页面,点击左上角的OPS(运维),将ip修改成nginx代理后的,按下回车(enter)键,使其变成被边框包住的样式。点击右侧UPDATE(更新)。右上角会出现SUCCESS,刷新该页面,确保端口为nginx代理后的。
![](https://img-blog.csdnimg.cn/img_convert/7ee8a260840b29f49c8dce78af45e255.png)
点击Cluster(集群),下方出现我们启动的集群数量,证明nginx桥接RocketMQ成功。
![](https://img-blog.csdnimg.cn/img_convert/d08d256ea12d3b034c509a14100b9e45.png)
经代码测试,nginx桥接后返回的端口可以进行集群的生产、消费等功能。
- 部署注意事项
JDK和OPENJDK都可以启动RocketMQ集群,jdk版本最低要求为1.8
Broker节点的配置:四主(master)的复制和刷盘(写入磁盘)必须是同步,否则会在其中一个master宕机时出现消费数量远大于生产数量。
由于版本原因,Broker节点配置时,日志的存储路径必须使用双斜杠//,否则可能出现无法启动还不报错等失败情况。
非主从替换情况下,在还有数据没进行消费时,出现某个master节点宕机,未消费数据需要等master节点起来后才能消费。
主从替换的最低要求是一主(master)两从(broker),刚起来broker节点都默认是从节点,然后在总多从节点中选出一个(master)主节点。主(master)节点宕机后再选出新的主(master)节点,之前宕机的节点重启后自动变回从(slave)节点。网上信息说主从替换的最低要求是从节点数量必须是2n+1个(即2*broker+master)。
可视化插件在修改application.properties时,可以修改namesrvAddr的ip和端口。在启动打包好的jar文件后,在页面左上角OPS(运维)里,可以修改集群的ip和端口。输入ip:端口后,按下回车(Enter)键,使其被一个边框给框住(选中状态),再点击右侧按钮进行更新。即可查看此ip端口启动的集群。
![](https://img-blog.csdnimg.cn/img_convert/28dbc52ac24ef023a887c93e5eb35ee6.png)