RocketMQ叢集搭建(3m-3s-async)
各角色介紹
角色 | 作用 |
---|---|
Producer |
訊息傳送者,將訊息傳送到 Broker 。無狀態,其與NameServer 叢集中的一個節點建立長連線,定期從NameServer 獲取Topic 路由資訊,並與提供Topic 服務的Master 建立連線,定時向Master 傳送心跳 |
Consumer |
訊息消費者,從 Broker 中獲取訊息消費。其與NameServer 叢集中的一個節點建立長連線,定期從NameServer 獲取Topic 路由資訊,並與提供Topic 服務的Master ,Slave 建立長連線,定時向Master ,Slave 傳送心跳。Consumer Master 訂閱訊息,也可以從Slave 訂閱訊息,訂閱規則由Broker 配置 |
Broker |
儲存和傳輸訊息。分為Master 和Slave ,並且Master 和Slave 是一對多的關係,Master 與 Slave 對應關係通過相同的BrokerName ,不同的BrokerId 來定義(為0 表示Master ,非0 表示Slave )每個Broker 與NameServer 叢集中的所有節點建立長連線,定時註冊Topic 到所有NameServer |
NameServer |
負責管理Broker ,比如生產者傳送到哪個 Broker ,由 NameServer 告知。叢集中節點之間無資訊同步,是無狀態節點 |
Topic |
訊息類別,一個傳送者可以傳送訊息給一個或多個Topic ,一個訊息的接受者可以訂閱一個或者多個 Topic |
Message Queue |
用於並行傳送和接收訊息 |
前提背景
3臺伺服器如下:
10.28.82.137 簡稱伺服器A
10.28.82.135 簡稱伺服器B
10.28.82.134 簡稱伺服器C
rocketmq-console訪問地址:124.196.2.107:3033
每臺伺服器必須環境:
JDK 本次採用:jdk1.8.0_161
Maven 本次採用:apache-maven-3.6.3
rocketmq 本次採用:rocketmq-all-4.7.1-bin-release
本次rocketmq叢集在安裝在/wls檔案下
JDK安裝
切換到/wls: cd /wls
解壓jdk1.8.0_161
tar -zxvf jdk-8u161-linux-x64.tar.gz
設定java環境變數:
修改sudo vim /etc/profile,最後一行新增:
export JAVA_HOME=/wls/jdk1.8.0_161 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH
更新後生效:source /etc/profile
Maven安裝
切換到/wls: cd /wls
解壓maven
tar -zxvf apache-maven-3.6.3-bin.tar.gz
設定maven環境變數
修改sudo vim /etc/profile,最後一行新增:
export MAVEN_HOME=/wls/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin
更新後生效:source /etc/profile
rocketmq安裝
去官網下載好安裝包或者直接使用wget下載
wget -c https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
新建資料夾
mkdir -p /wls/rocketmq
將壓縮rocketmq檔案解壓到指定目錄
unzip rocketmq-all-4.7.1-bin-release.zip -d /wls/rocketmq
重新命名解壓後的目錄
mv rocketmq-all-4.7.1-bin-release/ rocketmq-4.7.1
配置環境變數,增加RocketMQ NameServer地址
vim /etc/profile
export ROCKETMQ_HOME=/wls/rocketmq/rocketmq-4.7.1
export PATH=$ROCKETMQ_HOME/bin:$PATH
生效環境變數
source /etc/profile
到此已經完成叢集前的準備工作。
搭建rocketmq叢集(3-master-3-slave)
叢集規劃
主機 | 角色 | 架構 |
---|---|---|
伺服器A(10.28.82.137) | nameserver ,brokerserver |
broker-a ,broker-b-s |
伺服器B(10.28.82.135) | nameserver ,brokerserver |
broker-b ,broker-c-s |
伺服器C(10.28.82.134) | nameserver ,brokerserver |
broker-c ,broker-a-s |
伺服器A(10.28.82.137)
1.配置master broker-a
切換路徑
cd /wls/rocketmq/rocketmq-4.7.1/conf/2m-2s-async
修改broker配置
vi broker-a.properties
# 叢集名,不同broker節點叢集名是一樣的
brokerClusterName=DefaultCluster
# broker名字,不同broker節點brokerName是唯一的
brokerName=broker-a
# 0表示Master,大於0表示 Slave
brokerId=0
#nameServer地址,多個用英文分號分割
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
# 刪除檔案時間點,預設凌晨 4點
deleteWhen=04
# 檔案保留時間,預設 48 小時
fileReservedTime=48
# 當前節點角色,ASYNC_MASTER=非同步複製Master模式,SYNC_MASTER=同步雙寫Master模式
brokerRole=ASYNC_MASTER
# 刷盤模式,ASYNC_FLUSH=非同步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=ASYNC_FLUSH
# 資料儲存路徑
storePathRootDir=/wls/rocketmq/store/3astore
# commitLog 儲存路徑
storePathCommitLog=/wls/rocketmq/store/3astore/commitlog
# 消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/wls/rocketmq/store/3astore/consumequeue
# 訊息索引儲存路徑
storePathIndex=/wls/rocketmq/store/3astore/index
# checkpoint 檔案儲存路徑
storeCheckpoint=/wls/rocketmq/store/3astore/checkpoint
# abort 檔案儲存路徑
abortFile=/wls/rocketmq/store/3astore/abort
# 是否允許 Broker 自動建立Topic,建議關閉
autoCreateTopicEnable=false
# 是否允許 Broker 自動建立訂閱組,建議關閉
autoCreateSubscriptionGroup=false
# 設定brokerIP,如果不設定當伺服器有很多網絡卡,預設會讀取第一個網絡卡的IP地址(如安裝docker後),會導致客戶端無法連線
brokerIP1=10.28.82.137
# broker對外服務的監聽埠,預設10911
listenPort=10911
2.配置slave broker-b-s(即把伺服器A作為伺服器B的從機)
vi broker-b-s.properties
# 叢集名,不同broker節點叢集名是一樣的
brokerClusterName=DefaultCluster
# broker名字,不同broker節點brokerName是唯一的
brokerName=broker-b
# 0表示Master,大於0表示 Slave
brokerId=1
#nameServer地址,多個用英文分號分割
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
# 刪除檔案時間點,預設凌晨 4點
deleteWhen=04
# 檔案保留時間,預設 48 小時
fileReservedTime=48
# 當前節點角色,ASYNC_MASTER=非同步複製Master模式,SYNC_MASTER=同步雙寫Master模式
brokerRole=SLAVE
# 刷盤模式,ASYNC_FLUSH=非同步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=ASYNC_FLUSH
# 資料儲存路徑
storePathRootDir=/wls/rocketmq/store/3bstore
# commitLog 儲存路徑
storePathCommitLog=/wls/rocketmq/store/3bstore/commitlog
# 消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/wls/rocketmq/store/3bstore/consumequeue
# 訊息索引儲存路徑
storePathIndex=/wls/rocketmq/store/3bstore/index
# checkpoint 檔案儲存路徑
storeCheckpoint=/wls/rocketmq/store/3bstore/checkpoint
# abort 檔案儲存路徑
abortFile=/wls/rocketmq/store/3bstore/abort
# 是否允許 Broker 自動建立Topic,建議關閉
autoCreateTopicEnable=false
# 是否允許 Broker 自動建立訂閱組,建議關閉
autoCreateSubscriptionGroup=false
# 設定brokerIP,如果不設定當伺服器有很多網絡卡,預設會讀取第一個網絡卡的IP地址(如安裝docker後),會導致客戶端無法連線
brokerIP1=10.28.82.137
# broker對外服務的監聽埠,預設10911
listenPort=10811
此處一定要注意:兩個broker的儲存路徑不要一樣
修改預設broker和nameserver的預設記憶體配置(此處僅供參考,按實際情況自行修改)
# 修改broker記憶體配置,將預設4G最低記憶體改為1g
vim /wls/rocketmq/rocketmq-4.7.1/bin/runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
# 修改runserver.sh,將預設2G最低記憶體改為512
vim /wls/rocketmq/rocketmq-4.7.1/bin/runserver.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
伺服器B(10.28.82.135)
1.配置master broker-b
切換路徑
cd /wls/rocketmq/rocketmq-4.7.1/conf/2m-2s-async
修改broker配置
vi broker-b.properties
# 叢集名,不同broker節點叢集名是一樣的
brokerClusterName=DefaultCluster
# broker名字,不同broker節點brokerName是唯一的
brokerName=broker-b
# 0表示Master,大於0表示 Slave
brokerId=0
#nameServer地址,多個用英文分號分割
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
# 刪除檔案時間點,預設凌晨 4點
deleteWhen=04
# 檔案保留時間,預設 48 小時
fileReservedTime=48
# 當前節點角色,ASYNC_MASTER=非同步複製Master模式,SYNC_MASTER=同步雙寫Master模式
brokerRole=ASYNC_MASTER
# 刷盤模式,ASYNC_FLUSH=非同步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=ASYNC_FLUSH
# 資料儲存路徑
storePathRootDir=/wls/rocketmq/store/3bstore
# commitLog 儲存路徑
storePathCommitLog=/wls/rocketmq/store/3bstore/commitlog
# 消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/wls/rocketmq/store/3bstore/consumequeue
# 訊息索引儲存路徑
storePathIndex=/wls/rocketmq/store/3bstore/index
# checkpoint 檔案儲存路徑
storeCheckpoint=/wls/rocketmq/store/3bstore/checkpoint
# abort 檔案儲存路徑
abortFile=/wls/rocketmq/store/3bstore/abort
# 是否允許 Broker 自動建立Topic,建議關閉
autoCreateTopicEnable=false
# 是否允許 Broker 自動建立訂閱組,建議關閉
autoCreateSubscriptionGroup=false
# 設定brokerIP,如果不設定當伺服器有很多網絡卡,預設會讀取第一個網絡卡的IP地址(如安裝docker後),會導致客戶端無法連線
brokerIP1=10.28.82.135
# broker對外服務的監聽埠,預設10911
listenPort=10911
2.配置slave broker-c-s(即把伺服器B作為伺服器C的從機)
vi broker-c-s.properties(原資料夾中無此檔案,需要自己新加,或者將其他檔名修改為此檔名)
# 叢集名,不同broker節點叢集名是一樣的
brokerClusterName=DefaultCluster
# broker名字,不同broker節點brokerName是唯一的
brokerName=broker-c
# 0表示Master,大於0表示 Slave
brokerId=1
#nameServer地址,多個用英文分號分割
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
# 刪除檔案時間點,預設凌晨 4點
deleteWhen=04
# 檔案保留時間,預設 48 小時
fileReservedTime=48
# 當前節點角色,ASYNC_MASTER=非同步複製Master模式,SYNC_MASTER=同步雙寫Master模式
brokerRole=SLAVE
# 刷盤模式,ASYNC_FLUSH=非同步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=ASYNC_FLUSH
# 資料儲存路徑
storePathRootDir=/wls/rocketmq/store/3cstore
# commitLog 儲存路徑
storePathCommitLog=/wls/rocketmq/store/3cstore/commitlog
# 消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/wls/rocketmq/store/3cstore/consumequeue
# 訊息索引儲存路徑
storePathIndex=/wls/rocketmq/store/3cstore/index
# checkpoint 檔案儲存路徑
storeCheckpoint=/wls/rocketmq/store/3cstore/checkpoint
# abort 檔案儲存路徑
abortFile=/wls/rocketmq/store/3cstore/abort
# 是否允許 Broker 自動建立Topic,建議關閉
autoCreateTopicEnable=false
# 是否允許 Broker 自動建立訂閱組,建議關閉
autoCreateSubscriptionGroup=false
# 設定brokerIP,如果不設定當伺服器有很多網絡卡,預設會讀取第一個網絡卡的IP地址(如安裝docker後),會導致客戶端無法連線
brokerIP1=10.28.82.135
# broker對外服務的監聽埠,預設10911
listenPort=10811
此處一定要注意:兩個broker的儲存路徑一定不要一樣
修改預設broker和nameserver的預設記憶體配置(此處僅供參考,按實際情況自行修改)
# 修改broker記憶體配置,將預設4G最低記憶體改為1g
vim /wls/rocketmq/rocketmq-4.7.1/bin/runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
# 修改runserver.sh,將預設2G最低記憶體改為512
vim /wls/rocketmq/rocketmq-4.7.1/bin/runserver.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
伺服器C(10.28.82.134)
1.配置master broker-c
切換路徑
cd /wls/rocketmq/rocketmq-4.7.1/conf/2m-2s-async
修改broker配置
vi broker-c.properties
# 叢集名,不同broker節點叢集名是一樣的
brokerClusterName=DefaultCluster
# broker名字,不同broker節點brokerName是唯一的
brokerName=broker-c
# 0表示Master,大於0表示 Slave
brokerId=0
#nameServer地址,多個用英文分號分割
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
# 刪除檔案時間點,預設凌晨 4點
deleteWhen=04
# 檔案保留時間,預設 48 小時
fileReservedTime=48
# 當前節點角色,ASYNC_MASTER=非同步複製Master模式,SYNC_MASTER=同步雙寫Master模式
brokerRole=ASYNC_MASTER
# 刷盤模式,ASYNC_FLUSH=非同步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=ASYNC_FLUSH
# 資料儲存路徑
storePathRootDir=/wls/rocketmq/store/3cstore
# commitLog 儲存路徑
storePathCommitLog=/wls/rocketmq/store/3cstore/commitlog
# 消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/wls/rocketmq/store/3cstore/consumequeue
# 訊息索引儲存路徑
storePathIndex=/wls/rocketmq/store/3cstore/index
# checkpoint 檔案儲存路徑
storeCheckpoint=/wls/rocketmq/store/3cstore/checkpoint
# abort 檔案儲存路徑
abortFile=/wls/rocketmq/store/3cstore/abort
# 是否允許 Broker 自動建立Topic,建議關閉
autoCreateTopicEnable=false
# 是否允許 Broker 自動建立訂閱組,建議關閉
autoCreateSubscriptionGroup=false
# 設定brokerIP,如果不設定當伺服器有很多網絡卡,預設會讀取第一個網絡卡的IP地址(如安裝docker後),會導致客戶端無法連線
brokerIP1=10.28.82.134
# broker對外服務的監聽埠,預設10911
listenPort=10911
2.配置slave broker-a-s(即把伺服器C作為伺服器A的從機)
vi broker-a-s.properties
# 叢集名,不同broker節點叢集名是一樣的
brokerClusterName=DefaultCluster
# broker名字,不同broker節點brokerName是唯一的
brokerName=broker-a
# 0表示Master,大於0表示 Slave
brokerId=1
#nameServer地址,多個用英文分號分割
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
# 刪除檔案時間點,預設凌晨 4點
deleteWhen=04
# 檔案保留時間,預設 48 小時
fileReservedTime=48
# 當前節點角色,ASYNC_MASTER=非同步複製Master模式,SYNC_MASTER=同步雙寫Master模式
brokerRole=SLAVE
# 刷盤模式,ASYNC_FLUSH=非同步刷盤,SYNC_FLUSH=同步刷盤
flushDiskType=ASYNC_FLUSH
# 資料儲存路徑
storePathRootDir=/wls/rocketmq/store/3astore
# commitLog 儲存路徑
storePathCommitLog=/wls/rocketmq/store/3astore/commitlog
# 消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/wls/rocketmq/store/3astore/consumequeue
# 訊息索引儲存路徑
storePathIndex=/wls/rocketmq/store/3astore/index
# checkpoint 檔案儲存路徑
storeCheckpoint=/wls/rocketmq/store/3astore/checkpoint
# abort 檔案儲存路徑
abortFile=/wls/rocketmq/store/3astore/abort
# 是否允許 Broker 自動建立Topic,建議關閉
autoCreateTopicEnable=false
# 是否允許 Broker 自動建立訂閱組,建議關閉
autoCreateSubscriptionGroup=false
# 設定brokerIP,如果不設定當伺服器有很多網絡卡,預設會讀取第一個網絡卡的IP地址(如安裝docker後),會導致客戶端無法連線
brokerIP1=10.28.82.134
# broker對外服務的監聽埠,預設10911
listenPort=10811
此處一定要注意:兩個broker的儲存路徑一定不要一樣
修改預設broker和nameserver的預設記憶體配置(此處僅供參考,按實際情況自行修改)
# 修改broker記憶體配置,將預設4G最低記憶體改為1g
vim /wls/rocketmq/rocketmq-4.7.1/bin/runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
# 修改runserver.sh,將預設2G最低記憶體改為512
vim /wls/rocketmq/rocketmq-4.7.1/bin/runserver.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
伺服器ABC的broker配置注意
1.注意每個主broker和它的從broker的brokerName需要一致。
2.注意主broker的brokerId=0,從broker的brokerId=1,0表示Master,大於0表示 Slave,不然broker啟動會因衝突而失敗
3.無論主從,每個broker,都應該註冊到所有的nameServer中,如下
namesrvAddr=10.28.82.134:9876;10.28.82.135:9876;10.28.82.137:9876
4.注意主broker的brokerRole=ASYNC_MASTER,從broker的brokerRole=SLAVE
5.brokerIP1按照所在伺服器ip來配置
6.同一個伺服器的兩個broker監聽埠不能一樣,但是不同伺服器的監聽埠可以一樣
啟動叢集
啟動namesrv(每臺都要啟動)
cd /wls/rocketmq/rocketmq-4.7.1/bin
# 啟動NameServer,NameServer需要先於Broker啟動,且如果在生產環境使用,為了保證高可用,建議一般規模的叢集啟動3個NameServer
nohup sh mqnamesrv &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/namesrv.log
看到The Name Server boot success...即啟動成功
啟動broker(每臺都要啟動,此處以伺服器A為例)
# 啟動Broker叢集
# 在機器A,啟動Master broker-a,-c 引數指定broker配置檔案地址
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
# 在機器A,啟動slave broker-b-s,-c 引數指定broker配置檔案地址
nohup sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &
# 驗證Name Server 是否啟動成功
tail -f ~/logs/rocketmqlogs/broker.log
檢視叢集
# 檢視叢集狀態
sh mqadmin clusterlist -n 10.28.82.137:9876
或sh mqadmin clusterlist -n 10.28.82.135:9876
或sh mqadmin clusterlist -n 10.28.82.134:9876
# 關閉服務的命令
sh mqshutdown broker
sh mqshutdown namesrv
檢視rocketmq程序:
ps -ef |grep rocketmq
安裝rocketmq-console(安裝到一臺伺服器上即可)
以伺服器A為例:
cd /wls/rocketmq
# 下載原始碼
git clone https://github.com/apache/rocketmq-externals
# 修改配置檔案,修改以下幾個配置即可
vim /wls/rocketmq/rocketmq-externals/rocketmq-console/src/main/resources/application.properties
# 服務埠號
server.port=3033
# NameServer服務地址,多臺伺服器用英文分號分割
rocketmq.config.namesrvAddr=10.28.82.137:9876;10.28.82.135:9876;10.28.82.134:9876
# mq資料路徑,可以自己修改
rocketmq.config.dataPath=/wls/rocketmq/rocketmq-console/data
# maven編譯
cd /wls/rocketmq/rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
# 執行rocketmq-console
# 該方式啟動關閉伺服器連線的時候同時也會關閉啟動的程序,適用於測試的時候使用
java -jar target/rocketmq-console-ng-2.0.0.jar
# 該方式將java程式設定為後臺執行,nohup表示不掛斷執行,命令結尾的&表示在後臺執行
# 0:stdin (standard input),1:stdout (standard output),2:stderr (standard error)
# 2>&1是將標準錯誤(2)重定向到標準輸出(&1),標準輸出(&1)再被重定向輸入到console.log檔案中
nohup java -jar target/rocketmq-console-ng-2.0.0.jar >console.log 2>&1 &
叢集搭建成功
測試mqadmin管理工具
RocketMQ的原始碼中並沒有為我們提供類似於Nacos或者RabbitMQ那樣的控制檯,只提供了一個mqadmin指令來管理RocketMQ,命令在bin目錄下。使用方式是 ./mqadmin {command} {args}
所有指令如下:
Topic相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
updateTopic | 建立更新Topic配置 | -b | Broker 地址,表示 topic 所在 Broker,只支援單臺Broker,地址為ip:port |
-c | cluster 名稱,表示 topic 所在叢集(叢集可通過 clusterList 查詢) | ||
-h- | 列印幫助 | ||
-n | NameServer服務地址,格式 ip:port | ||
-p | 指定新topic的讀寫許可權( W=2|R=4|WR=6 ) | ||
-r | 可讀佇列數(預設為 8) | ||
-w | 可寫佇列數(預設為 8) | ||
-t | topic 名稱(名稱只能使用字元 ^[a-zA-Z0-9_-]+$ ) | ||
deleteTopic | 刪除Topic | -c | cluster 名稱,表示刪除某叢集下的某個 topic (叢集 可通過 clusterList 查詢) |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic 名稱(名稱只能使用字元 ^[a-zA-Z0-9_-]+$ ) | ||
topicList | 檢視 Topic 列表資訊 | -h | 列印幫助 |
-c | 不配置-c只返回topic列表,增加-c返回clusterName, topic, consumerGroup資訊,即topic的所屬叢集和訂閱關係,沒有引數 | ||
-n | NameServer 服務地址,格式 ip:port | ||
topicRoute | 檢視 Topic 路由資訊 | -t | topic 名稱 |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
topicStatus | 檢視 Topic 訊息佇列offset | -t | topic 名稱 |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
topicClusterList | 檢視 Topic 所在叢集列表 | -t | topic 名稱 |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
updateTopicPerm | 更新 Topic 讀寫許可權 | -t | topic 名稱 |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
-b | Broker 地址,表示 topic 所在 Broker,只支援單臺Broker,地址為ip:port | ||
-p | 指定新 topic 的讀寫許可權( W=2|R=4|WR=6 ) | ||
-c | cluster 名稱,表示 topic 所在叢集(叢集可通過 clusterList 查詢),-b優先,如果沒有-b,則對叢集中所有Broker執行命令 | ||
updateOrderConf | 從NameServer上建立、刪除、獲取特定名稱空間的kv配置,目前還未啟用 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic,鍵 | ||
-v | orderConf,值 | ||
-m | method,可選get、put、delete | ||
allocateMQ | 以平均負載演算法計算消費者列表負載訊息佇列的負載結果 | -t | topic 名稱 |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
-i | ipList,用逗號分隔,計算這些ip去負載Topic的訊息佇列 | ||
statsAll | 列印Topic訂閱關係、TPS、積累量、24h讀寫總量等資訊 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-a | 是否只打印活躍topic | ||
-t | 指定topic |
叢集相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
clusterList | 檢視叢集資訊,叢集、BrokerName、BrokerId、TPS等資訊 | -m | 列印更多資訊 (增加打印出如下資訊 #InTotalYest, #OutTotalYest, #InTotalToday ,#OutTotalToday) |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
-i | 列印間隔,單位秒 | ||
clusterRT | 傳送訊息檢測叢集各Broker RT。訊息發往${BrokerName} Topic。 | -a | amount,每次探測的總數,RT = 總時間 / amount |
-s | 訊息大小,單位B | ||
-c | 探測哪個叢集 | ||
-p | 是否列印格式化日誌,以|分割,預設不列印 | ||
-h | 列印幫助 | ||
-m | 所屬機房,列印使用 | ||
-i | 傳送間隔,單位秒 | ||
-n | NameServer 服務地址,格式 ip:port |
Broker相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
updateBrokerConfig | 更新 Broker 配置檔案,會修改Broker.conf | -b | Broker 地址,格式為ip:port |
-c | cluster 名稱 | ||
-k | key 值 | ||
-v | value 值 | ||
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
brokerStatus | 檢視 Broker 統計資訊、執行狀態(你想要的資訊幾乎都在裡面) | -b | Broker 地址,地址為ip:port |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
brokerConsumeStats | Broker中各個消費者的消費情況,按Message Queue維度返回Consume Offset,Broker Offset,Diff,TImestamp等資訊 | -b | Broker 地址,地址為ip:port |
-t | 請求超時時間 | ||
-l | diff閾值,超過閾值才打印 | ||
-o | 是否為順序topic,一般為false | ||
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
getBrokerConfig | 獲取Broker配置 | -b | Broker 地址,地址為ip:port |
-n | NameServer 服務地址,格式 ip:port | ||
wipeWritePerm | 從NameServer上清除 Broker寫許可權 | -b | Broker 地址,地址為ip:port |
-n | NameServer 服務地址,格式 ip:port | ||
-h | 列印幫助 | ||
cleanExpiredCQ | 清理Broker上過期的Consume Queue,如果手動減少對列數可能產生過期佇列 | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-b | Broker 地址,地址為ip:port | ||
-c | 叢集名稱 | ||
cleanUnusedTopic | 清理Broker上不使用的Topic,從記憶體中釋放Topic的Consume Queue,如果手動刪除Topic會產生不使用的Topic | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-b | Broker 地址,地址為ip:port | ||
-c | 叢集名稱 | ||
sendMsgStatus | 向Broker發訊息,返回傳送狀態和RT | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-b | BrokerName,注意不同於Broker地址 | ||
-s | 訊息大小,單位B | ||
-c | 傳送次數 |
訊息相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
queryMsgById | 根據offsetMsgId查詢msg,如果使用開源控制檯,應使用offsetMsgId,此命令還有其他引數,具體作用請閱讀QueryMsgByIdSubCommand。 | -i | msgId |
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
queryMsgByKey | 根據訊息 Key 查詢訊息 | -k | msgKey |
-t | Topic 名稱 | ||
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
queryMsgByOffset | 根據 Offset 查詢訊息 | -b | Broker 名稱,(這裡需要注意 填寫的是 Broker 的名稱,不是 Broker 的地址,Broker 名稱可以在 clusterList 查到) |
-i | query 佇列 id | ||
-o | offset 值 | ||
-t | topic 名稱 | ||
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
queryMsgByUniqueKey | 根據msgId查詢,msgId不同於offsetMsgId,區別詳見常見運維問題。-g,-d配合使用,查到訊息後嘗試讓特定的消費者消費訊息並返回消費結果 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-i | uniqe msg id | ||
-g | consumerGroup | ||
-d | clientId | ||
-t | topic名稱 | ||
checkMsgSendRT | 檢測向topic發訊息的RT,功能類似clusterRT | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic名稱 | ||
-a | 探測次數 | ||
-s | 訊息大小 | ||
sendMessage | 傳送一條訊息,可以根據配置發往特定Message Queue,或普通傳送。 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic名稱 | ||
-p | body,訊息體 | ||
-k | keys | ||
-c | tags | ||
-b | BrokerName | ||
-i | queueId | ||
consumeMessage | 消費訊息。可以根據offset、開始&結束時間戳、訊息佇列消費訊息,配置不同執行不同消費邏輯,詳見ConsumeMessageCommand。 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic名稱 | ||
-b | BrokerName | ||
-o | 從offset開始消費 | ||
-i | queueId | ||
-g | 消費者分組 | ||
-s | 開始時間戳,格式詳見-h | ||
-d | 結束時間戳 | ||
-c | 消費多少條訊息 | ||
printMsg | 從Broker消費訊息並列印,可選時間段 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic名稱 | ||
-c | 字符集,例如UTF-8 | ||
-s | subExpress,過濾表示式 | ||
-b | 開始時間戳,格式參見-h | ||
-e | 結束時間戳 | ||
-d | 是否列印訊息體 | ||
printMsgByQueue | 類似printMsg,但指定Message Queue | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-t | topic名稱 | ||
-i | queueId | ||
-a | BrokerName | ||
-c | 字符集,例如UTF-8 | ||
-s | subExpress,過濾表示式 | ||
-b | 開始時間戳,格式參見-h | ||
-e | 結束時間戳 | ||
-p | 是否列印訊息 | ||
-d | 是否列印訊息體 | ||
-f | 是否統計tag數量並列印 | ||
resetOffsetByTime | 按時間戳重置offset,Broker和consumer都會重置 | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-g | 消費者分組 | ||
-t | topic名稱 | ||
-s | 重置為此時間戳對應的offset | ||
-f | 是否強制重置,如果false,只支援回溯offset,如果true,不管時間戳對應offset與consumeOffset關係 | ||
-c | 是否重置c++客戶端offset |
消費者和消費者組相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
consumerProgress | 檢視訂閱組消費狀態,可以檢視具體的client IP的訊息積累量 | -g | 消費者所屬組名 |
-s | 是否列印client IP | ||
-h | 列印幫助 | ||
-n | NameServer 服務地址,格式 ip:port | ||
consumerStatus | 檢視消費者狀態,包括同一個分組中是否都是相同的訂閱,分析Process Queue是否堆積,返回消費者jstack結果,內容較多,使用者參見ConsumerStatusSubCommand | -h | 列印幫助 |
-n | NameServer 服務地址,格式 ip:port | ||
-g | consumer group | ||
-i | clientId | ||
-s | 是否執行jstack | ||
getConsumerStatus | 獲取 Consumer 消費進度 | -g | 消費者所屬組名 |
-t | 查詢主題 | ||
-i | Consumer 客戶端 ip | ||
-n | NameServer 服務地址,格式 ip:port | ||
-h | 列印幫助 | ||
updateSubGroup | 更新或建立訂閱關係 | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-b | Broker地址 | ||
-c | 叢集名稱 | ||
-g | 消費者分組名稱 | ||
-s | 分組是否允許消費 | ||
-m | 是否從最小offset開始消費 | ||
-d | 是否是廣播模式 | ||
-q | 重試佇列數量 | ||
-r | 最大重試次數 | ||
-i | 當slaveReadEnable開啟時有效,且還未達到從slave消費時建議從哪個BrokerId消費,可以配置備機id,主動從備機消費 | ||
-w | 如果Broker建議從slave消費,配置決定從哪個slave消費,配置BrokerId,例如1 | ||
-a | 當消費者數量變化時是否通知其他消費者負載均衡 | ||
deleteSubGroup | 從Broker刪除訂閱關係 | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-b | Broker地址 | ||
-c | 叢集名稱 | ||
-g | 消費者分組名稱 | ||
cloneGroupOffset | 在目標群組中使用源群組的offset | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-s | 源消費者組 | ||
-d | 目標消費者組 | ||
-t | topic名稱 | ||
-o | 暫未使用 |
連線相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
consumerConnec tion | 查詢 Consumer 的網路連線 | -g | 消費者所屬組名 |
-n | NameServer 服務地址,格式 ip:port | ||
-h | 列印幫助 | ||
producerConnec tion | 查詢 Producer 的網路連線 | -g | 生產者所屬組名 |
-t | 主題名稱 | ||
-n | NameServer 服務地址,格式 ip:port | ||
-h | 列印幫助 |
NameServer相關
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
updateKvConfig | 更新NameServer的kv配置,目前還未使用 | -s | 名稱空間 |
-k | key | ||
-v | value | ||
-n | NameServer 服務地址,格式 ip:port | ||
-h | 列印幫助 | ||
deleteKvConfig | 刪除NameServer的kv配置 | -s | 名稱空間 |
-k | key | ||
-n | NameServer 服務地址,格式 ip:port | ||
-h | 列印幫助 | ||
getNamesrvConfig | 獲取NameServer配置 | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
updateNamesrvConfig | 修改NameServer配置 | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 | ||
-k | key | ||
-v | value |
其他
名稱 | 含義 | 命令選項 | 說明 |
---|---|---|---|
startMonitoring | 開啟監控程序,監控訊息誤刪、重試佇列訊息數等 | -n | NameServer 服務地址,格式 ip:port |
-h | 列印幫助 |
注意:
1、幾乎所有指令都需要通過-n引數配置nameServer地址,格式為ip:port
2、幾乎所有執行都可以通過-h引數獲得幫助