windows部署Nginx代理的rocketMQ

    • 本人电脑配置及准备步骤

Windows系统:Windows10家庭版

RocketMQ版本:4.9.1(2021.10.14最新版本)

JDK版本:jdk8u302-b01(阿里系列,最新国产JDK)

JDK下载地址

https://github.com/alibaba/dragonwell8/releases/download/dragonwell-8.8.8_jdk8u302-ga/Alibaba_Dragonwell_8.8.8_x64_windows.zip

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(稳定版本)

  1. Jdk只要是1.8版本即可,无需担心是jdk还是openjdk

  1. 插件只需要rocketmq-console对应的maven项目。

    • 安装步骤

2.1 配置环境变量

  1. 将下载好的RocketMQ解压(位置根据个人喜好)

  1. 在系统变量中配置RocketMQ

变量名:ROCKETMQ_HOME

变量值:MQ解压路径\MQ文件夹名

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)

  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=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
  1. 修改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
  1. 修改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
  1. 修改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两个配置文件。

  1. runserver.cmd

由29行参数可以看到,启动namesrv的内存为2GB,本人改为以下参数。

set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn126m -XX:PermSize=128m -XX:MaxPermSize=320m"
  1. runbroker.cmd

同理,修改broker存储在31行。

set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m"

2.4 启动集群

确保进入RocketMQ的bin目录,按配置的broker启动多个cmd命令(broker配置文件数+namesrv),命令执行成功后不要关闭cmd窗口,切换新的窗口启动下一个命令。

2.4.1 启动与关闭顺序

  1. 启动

  1. 启动mqnamesrv

  1. 启动mqbroker

  1. 关闭

  1. 关闭所有mqbroker

  1. 关闭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代码执行成功如图所示:

mqbroker.cmd代码执行成功如图所示:

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

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/

2.5.5添加主题

点击页面topic(主题),此时搭建的集群没有任何主题(第一次搭建、启动,默认添加主题未开启),需要手动添加,点击ADD/UPDATE(添加/更新),会出现配置主题页面(可能需要等会才加载出来)。添加所属集群、broker、主题名称,点击COMMIT(提交)即可。

  1. 所属集群、broker_name右侧都是对应的都是下拉框,broker_name的可以重复选择。

  1. 配置好所属集群名称,可以不用配置broker,主题会根据名称找到集群下所有broker。

  1. 再次点击ADD/UPDATE(添加/修改),会根据所属集群修改主题,而不是在这个集群中再次添加一个主题。

2.5.6 添加消费者

点击页面Consumer(消费者),会看到很多消费者,都是系统内部使用的。刚刚创建好主题无法使用这些消费者,需要手动创建消费者。创建过程和创建主题一样。

  1. consumeBroadcastEnable:是否广播。将其点成否

  1. 广播模式:不管是谁生产的数据,所有的消费者都消费一遍(有1000条数据,生产者负载均衡,但每个消费者都消费这1000条)

  1. 右下角COMMIT在定义好所属集群、主题名称后才能点击。

  1. BrokerId:0代表master(主),默认为0(修改无效,无需在意)。

2.6 修改日志存储路径

(除了rocketmq的rocketmq-client.log以外有效,暂未找到解决办法)

启动集群和可视化插件后,会在C盘user.home(C:/User/admin(系统当前用户))的logs目录下存放,会很容易将系统盘写满。

  1. 进入RocketMQ的bin目录,在tools.cmd、runserver.cmd和runbroker.cmd三个配置文件里添加user.home路径(使相关配置文件不在存储到C:/User/admin)。

set "JAVA_OPT=%JAVA_OPT% -Duser.home=日志存储路径"
  1. 进入RocketMQ的conf目录,修改以下三个xml文件

  1. 三个xml文件都是添加property标签(名称任意,路径真实存在即可),将文件内所有的user.home替换为property标签name对应的名称(截图显示不全)。修改好启动集群即可。

  1. 修改可视化插件日志存储路径:进入可视化插件(rocketmq-console)的src\main\resources目录,修改logback.xml文件

  1. 将11行和14行的${user.home}修改(按个人需求修改,真实存在的路径即可)。修改好后重新打包启动即可。

2.7 NGINX代理

  1. 解压。

将下载好的nginx根据个人喜好解压。进入nginx的conf目录,打开nginx.conf文件

  1. 配置。

修改http模块的server中listen对应的端口号(根据个人喜好进行修改,不要与其他进程抢占端口)

配置好后回到nginx目录开启cmd命令窗口,输入start nginx.exe ,会看到nginx一闪而过,并且没有任何提示,这时nginx就开启了,任务管理器可能会查看到(本人电脑未看到nginx启动的进程)。在网页输入127.0.0.1:8081,会看到nginx欢迎界面,证明windows部署nginx成功。

  1. 错误情况。

如果没有出现欢迎界面,看一下/logs/error.log文件下错误内容。

  1. 代理。

部署成功后,修改/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;
    }
}
  1. 在nginx目录使用cmd命令重新加载nginx

nginx -s reload 

利用可视化工具查看nginx是否桥接rocketmq

进入可视化页面,点击左上角的OPS(运维),将ip修改成nginx代理后的,按下回车(enter)键,使其变成被边框包住的样式。点击右侧UPDATE(更新)。右上角会出现SUCCESS,刷新该页面,确保端口为nginx代理后的。

点击Cluster(集群),下方出现我们启动的集群数量,证明nginx桥接RocketMQ成功。

经代码测试,nginx桥接后返回的端口可以进行集群的生产、消费等功能。

    • 部署注意事项

  1. JDK和OPENJDK都可以启动RocketMQ集群,jdk版本最低要求为1.8

  1. Broker节点的配置:四主(master)的复制和刷盘(写入磁盘)必须是同步,否则会在其中一个master宕机时出现消费数量远大于生产数量。

  1. 由于版本原因,Broker节点配置时,日志的存储路径必须使用双斜杠//,否则可能出现无法启动还不报错等失败情况。

  1. 主从替换情况下,在还有数据没进行消费时,出现某个master节点宕机,未消费数据需要等master节点起来后才能消费。

  1. 主从替换的最低要求是一主(master)两从(broker),刚起来broker节点都默认是从节点,然后在总多从节点中选出一个(master)主节点。主(master)节点宕机后再选出新的主(master)节点,之前宕机的节点重启后自动变回从(slave)节点。网上信息说主从替换的最低要求是从节点数量必须是2n+1个(即2*broker+master)。

  1. 可视化插件在修改application.properties时,可以修改namesrvAddr的ip和端口。在启动打包好的jar文件后,在页面左上角OPS(运维)里,可以修改集群的ip和端口。输入ip:端口后,按下回车(Enter)键,使其被一个边框给框住(选中状态),再点击右侧按钮进行更新。即可查看此ip端口启动的集群。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值