RocketMQ学习笔记
一、下载安装
1.1 官网下载
官网地址:
下载地址:
1.2 集群搭建(2m-2s-async模式)
设计架构如下:
服务器 | 部署节点 | 部署broker |
---|---|---|
192.168.10.131 | namesrv、broker | broker-a-m、broker-b-s |
192.168.10.132 | namesrv、broker | broker-b-m、broker-a-s |
192.168.10.133 | namesrv | 仅部署namesrv |
1.2.1 解压、修改内存、新建文件存储目录
rocketMq我放在/usr/local/rocketmq目录,进入目录执行
解压:
unzip rocketmq-all-4.9.0-bin-release.zip
修改内存大小:修改runserver.sh和runbroker.sh的JAVA_OPT的大小
cd rocketmq-all-4.9.0-bin-release/bin/
vim runserver.sh
powershell
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=160m"
vim runbroker.sh
powershell
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
在3台服务器的/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release新建目录
store
在store下新建
master slave
两个目录分别存放主、从的相应配置分别在master slave里面新建
abort checkpoint commitlog consumequeue index pathroot
目录
mkdir store
cd store/
mkdir master slave
cd master/
mkdir pathroot commitlog consumequeue index checkpoint abort
cd slave/
mkdir pathroot commitlog consumequeue index checkpoint abort
1.2.2 配置192.168.10.131
进入192.168.10.131的/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/conf/2m-2s-async
vim broker-a.properties
powershell
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a-m
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.10.131:9876;192.168.10.132:9876;192.168.10.133: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
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/pathroot
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/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
进入192.168.10.131的/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/conf/2m-2s-async
vim broker-b-s.properties
powershell
#所属集群名字
brokerClusterName=rocketmq-cluster
brokerName=broker-b-s
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.10.131:9876;192.168.10.132:9876;192.168.10.133:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10920
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/pathroot
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/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
1.2.3 配置192.168.10.132
进入192.168.10.132的/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/conf/2m-2s-async
vim broker-b.properties
powershell
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-b-m
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.10.131:9876;192.168.10.132:9876;192.168.10.133: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
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/pathroot
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/master/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
进入192.168.10.132的/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/conf/2m-2s-async
vim broker-a-s.properties
powershell
#所属集群名字
brokerClusterName=rocketmq-cluster
brokerName=broker-a-s
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-b,他的slave也叫broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.10.131:9876;192.168.10.132:9876;192.168.10.133:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,
listenPort=10920
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/pathroot
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release/store/slave/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
1.2.4 配置192.168.10.133
只做namesrv不启动broker,所以无需配置
1.3 启动
1.3.1 启动namesrv
分别在
3台
服务器的/usr/local/rocketmq/rocketmq-all-4.9.0-bin-release启动:
nohup sh bin/mqnamesrv &
查看日志:
tail -f ~/logs/rocketmqlogs/namesrv.log
1.3.2 启动broker
192.168.10.131
启动master:
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &
启动slave:
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &
查看日志:
tail -f ~/logs/rocketmqlogs/broker.log
192.168.10.132
启动master:
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties &
启动slave:
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &
查看日志:
tail -f ~/logs/rocketmqlogs/broker.log
1.4 监控qocketmq
下载控制台:
https://github.com/apache/rocketmq-externals/releases
使用IDEA打开后:
修改服务端口:
server.port=10088
修改连接地址:
rocketmq.config.namesrvAddr=192.168.10.131:9876;192.168.10.132:9876;192.168.10.133:9876
访问即可看到rocketMq集群
启动:记得开防火墙(一台机器上既有master又有slave,master用的10911、slave改成了10920,都要开墙)
9876
是nameserver中的端口,链接nameserver就靠这个端口 (必开墙)
10911
listenPort参数是broker的监听端口号,是remotingServer服务组件使用,作为对Producer和Consumer提供服务的端口号 (必开墙)
10909
fastListenPort参数是fastRemotingServer服务组件使用,默认为listenPort - 2,可以通过配置文件修改。 打开broker-x.conf,修改或增加fastListenPort参数
10912
haListenPort参数是HAService服务组件使用,用于Broker的主从同步,默认为listenPort -1,可以通过配置文件修改。 打开broker-x.conf,修改或增加haListenPort参数: