官網下載:rocketmq-all-4.4.0-bin-release.zip
准備環境:centos7.6
Maven
Java8+
操作:
在工作目錄中進行如下操作: /home/software
解壓縮:unzip rocketmq-all-4.4.0-bin-release.zip
改名:mv rocketmq-all-4.4.0 rocketmq
添加目錄:
mkdir -p /home/software/rocketmq/store/broker-a /home/software/rocketmq/store/broker-a/nsumequeue /home/software/rocketmq/store/broker-a/commitlog /home/software/rocketmq/store/broker-a/index /home/software/rocketmq/logs /home/software/rocketmq/store/broker-b-s /home/software/rocketmq/store/broker-b-s/nsumequeue /home/software/rocketmq/store/broker-b-s/commitlog /home/software/rocketmq/store/broker-b-s/index
修改配置文件:
rocketmq默認給出了三種建議配置模式
2m-2s-async(主從異步),----本文采用這種(圖中紅框文件夾)
2m-2s-sync(主從同步)
2m-noslave(僅master)
進入后,我的配置如下
配置文件模板參考
192.168.2.161上的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=192.168.2.161:9876;192.168.2.163: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=/home/software/rocketmq/store/broker-a
#commitLog 存儲路徑
storePathCommitLog=/home/software/rocketmq/store/broker-a/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/home/software/rocketmq/store/broker-a/consumequeue
#消息索引存儲路徑
storePathIndex=/home/software/rocketmq/store/broker-a/index
#checkpoint 文件存儲路徑
storeCheckpoint=/home/software/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/home/software/rocketmq/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 異步刷盤
------192.168.2.161上的broker-b-s.properties文件如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重復,為了管理,每個master起一個名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=192.168.2.161:9876;192.168.2.162: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
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/home/software/rocketmq/store/broker-b-s
#commitLog 存儲路徑
storePathCommitLog=/home/software/rocketmq/store/broker-b-s/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/home/software/rocketmq/store/broker-b-s/consumequeue
#消息索引存儲路徑
storePathIndex=/home/software/rocketmq/store/broker-b-s/index
#checkpoint 文件存儲路徑
storeCheckpoint=/home/software/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/home/software/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
------192.168.2.162上的broker-b.properties文件如下:
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,名字可重復,為了管理,每個master起一個名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=192.168.2.161:9876;192.168.2.163: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=/home/software/rocketmq/store/broker-a
#commitLog 存儲路徑
storePathCommitLog=/home/software/rocketmq/store/broker-a/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/home/software/rocketmq/store/broker-a/consumequeue
#消息索引存儲路徑
storePathIndex=/home/software/rocketmq/store/broker-a/index
#checkpoint 文件存儲路徑
storeCheckpoint=/home/software/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/home/software/rocketmq/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 異步刷盤
------192.168.2.162上的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=192.168.2.161:9876;192.168.2.162: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
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/home/software/rocketmq/store/broker-b-s
#commitLog 存儲路徑
storePathCommitLog=/home/software/rocketmq/store/broker-b-s/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/home/software/rocketmq/store/broker-b-s/consumequeue
#消息索引存儲路徑
storePathIndex=/home/software/rocketmq/store/broker-b-s/index
#checkpoint 文件存儲路徑
storeCheckpoint=/home/software/rocketmq/store/checkpoint
#abort 文件存儲路徑
abortFile=/home/software/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
----
節點1:192.168.2.161
節點2: 192.168.2.162
批量關閉:ps -ef | grep rocketmq | grep -v grep | awk -F ' ' '{print $2}' | xargs kill -2
---
啟動節點1的nameserver
nohup sh /home/software/rocketmq/bin/mqnamesrv > /home/software/rocketmq/logs/mqnamesrv.log 2>&1 &
啟動節點2的nameserver
nohup sh /home/software/rocketmq/bin/mqnamesrv > /home/software/rocketmq/logs/mqnamesrv.log 2>&1 &
啟動broker
啟動節點1的broker-a的master,對應的配置文件broker-a.properties,啟動多個實例時,指定對應的配置文件
nohup sh /home/software/rocketmq/bin/mqbroker -c /home/software/rocketmq/conf/2m-2s-async/broker-a.properties > /home/software/rocketmq/logs/broker-a.log 2>&1 &
啟動節點2的broker-b
nohup sh /home/software/rocketmq/bin/mqbroker -c /home/software/rocketmq/conf/2m-2s-async/broker-b.properties > /home/software/rocketmq/logs/broker-b.log 2>&1 &
啟動slave
啟動節點2的broker-a-s
nohup sh /home/software/rocketmq/bin/mqbroker -c /home/software/rocketmq/conf/2m-2s-async/broker-a-s.properties > /home/software/rocketmq/logs/broker-a-s.log 2>&1 &
啟動節點1的broker-b-s
nohup sh /home/software/rocketmq/bin/mqbroker -c /home/software/rocketmq/conf/2m-2s-async/broker-b-s.properties > /home/software/rocketmq/logs/broker-b-s.log 2>&1 &
查詢驗證
sh /home/software/rocketmq/bin/mqadmin clusterList -n 192.168.2.161:9876
[root@localhost 2m-2s-async]# sh /home/software/rocketmq/bin/mqadmin clusterList -n 192.168.2.161:9876
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
rocketmq-cluster broker-a 0 192.168.2.161:10911 V4_4_0 0.00(0,0ms) 0.00(0,0ms) 0 431674.28 -1.0000
rocketmq-cluster broker-a 1 192.168.2.162:10920 V4_4_0 0.00(0,0ms) 0.00(0,0ms) 0 431674.28 0.0946
rocketmq-cluster broker-b 0 192.168.2.162:10911 V4_4_0 0.00(0,0ms) 0.00(0,0ms) 0 431674.28 0.0946
rocketmq-cluster broker-b 1 192.168.2.161:10920 V4_4_0 0.00(0,0ms) 0.00(0,0ms) 0 431674.28 0.0989
啟動web管理界面
rocketmq提供多種管理方式,命令行和界面等,
apache提供一個開源的擴展項目: https://github.com/apache/rocketmq-externals 里面包含一個子項目rocketmq-console,配置下,打個包就可以用了
在application.properties中添加rocketmq.config.namesrvAddr的值,如圖
回到目錄開始打包:
打包命令:mvn clean package -Dmaven.test.skip=true
報錯如下:
由於rocketmq的4.4.0版本已經發布,所以4.4.0-SNAPSHOT已經沒有了,所以還需要修改pom文件的版本信息,將<rocketmq-version>4.4.0-SNAPSHOT</rocketmq-version>改為4.4.0
完成后再次打包:mvn clean package -Dmaven.test.skip=true
成功后,啟用jar包即可
java -jar rocketmq-console-ng-1.0.0.jar >/home/software/rocketmq/logs/mq-console.log 2>&1 &
驗證: