RocketMQ-tools分為3部分
admin
command
monitor
下面一一介紹
提供了管理操作接口
command提供了指令行控制MQ的一些方法。
進入RocketMQ安裝目錄,執行sh bin/mqadmin
有幾個參數的執行方法
列印指令提示,如下:
列印某個指令的提示參數,比如sh bin/mqadmin helop updatetopic(不需要區分大小寫)
比如 sh bin/mqadmin updatetopic -x xxx
首先來看bin/mqadmin這個啟動腳本
前面在設定ROCKETMQ_HOME環境變量,然後啟動MQAdminStartup這個類。
邏輯很簡單,
首先初始化可以支援的Command - initCommand
initLogback根據logback_tools.xml初始化,主要是日志系統。
然後根據傳入過來的參數,選擇不同的執行分支,也就是上面舉例的參數。
以updatetopic為例
進入UpdateTopicSubCommand.execute(xx)方法
execute的邏輯就是擷取傳入的參數,-t是必須的,然後還必須帶上-b或者-c才會執行。
如果沒有執行,那麼會列印updatetopic的參數清單。
-b代表某個broker, -c代表叢集
是以大概格式是: sh ./bin/mqadmin updatetopic -t topictest -b xxx
其他參數是可選的。
如果确定要更新topic,那麼就會調用RocketMQ-cli裡面的接口進行更新。
更新成功會列印更新成功輸出,否則會報異常。
附上所有指令的操作參數
<a href="https://www.cnblogs.com/zyguo/p/4962425.html">https://www.cnblogs.com/zyguo/p/4962425.html</a>
監控相關
啟動類是參數是startMonitoring
sh bin/mqadmin startMonitoring
代碼如下:
-n表示要顯示連接配接到的namesrv
-c
如果commandLine包含n參數,也就是如果輸入指令有帶-n的參數,比如sh bin/mqadmin topiclist -n localhost:9876。那麼把它帶的參數值拿出來,然後設定到SystemProperty裡面。
這樣做是為了其他地方可以拿這個參數,也就是RocketMQ傳遞namesrv address的時候,不是用普通的參數傳遞,而是用系統屬性。
這樣做有好處也有不好的地方吧,好處就是省心,一個位址設定了,很多地方都有可以得到這個值。不需要每個參數傳來傳去。不好的地方就是如果設定的地方多了,就容易混淆,互相影響。
然後執行command的execute方法, 也就是TopicListSubCommand.execute方法。
所有的command都實作了SubCommand接口。
SubCommand提供了幾個接口方法
這個類主要就是根據傳入的參數是否有-c 或者-n 擷取相應的topic,然後列印出來。
以-n為例,它的邏輯就是去namesrv擷取所有的topic,然後列印出來。
本文轉自rongwei84n 51CTO部落格,原文連結:http://blog.51cto.com/483181/2043859,如需轉載請自行聯系原作者