1. 程式人生 > 實用技巧 >RocketMQ叢集搭建(3m-3s-async)

RocketMQ叢集搭建(3m-3s-async)

RocketMQ叢集搭建(3m-3s-async)

各角色介紹

角色作用
Producer 訊息傳送者,將訊息傳送到 Broker。無狀態,其與NameServer叢集中的一個節點建立長連線,定期從NameServer獲取Topic路由資訊,並與提供Topic服務的Master建立連線,定時向Master傳送心跳
Consumer 訊息消費者,從 Broker 中獲取訊息消費。其與NameServer叢集中的一個節點建立長連線,定期從NameServer獲取Topic路由資訊,並與提供Topic服務的MasterSlave建立長連線,定時向MasterSlave傳送心跳。Consumer
既可以從Master訂閱訊息,也可以從Slave訂閱訊息,訂閱規則由Broker配置
Broker 儲存和傳輸訊息。分為MasterSlave,並且MasterSlave是一對多的關係,MasterSlave對應關係通過相同的BrokerName,不同的BrokerId來定義(為0表示Master,非0表示Slave)每個BrokerNameServer叢集中的所有節點建立長連線,定時註冊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) nameserverbrokerserver broker-abroker-b-s
伺服器B(10.28.82.135) nameserverbrokerserver broker-bbroker-c-s
伺服器C(10.28.82.134) nameserverbrokerserver broker-cbroker-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引數獲得幫助

3、當既有Broker地址(-b)又有叢集名稱clustername(-c)配合項,則優先以Broker地址執行指令。如果不配置Broker地址,則對叢集中所有主機執行指令。