《RocketMQ實戰與原理解析》學習筆記
單機版
rocketMQ 安裝&命令
下載安裝
> wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-source-release.zip
> unzip rocketmq-all-4.4.0-source-release.zip
> mvn -Prelease-all -DskipTests clean install -U
> cd distribution/target/apache-rocketmq
啓動Name Server
> nohup sh bin/mqnamesrv &
> tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
啓動Broker
> nohup sh bin/mqbroker -n localhost:9876 &
> tail -f ~/logs/rocketmqlogs/broker.log
The broker[%s, 172.30.30.233:10911] boot success...
發送/接收消息(命令行)
### 生產消息
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
接收消息(命令行)
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
關閉服務命令
> sh bin/mqshutdown broker
> sh bin/mqshutdown namesrv
生產環境(集羣)
master.conf
### broker-b-master.conf
namesrvAddr=s157:9876;s158:9876
brokerClusterName = DefaultCluster
### brokerName要注意不同
brokerName = broker-b
### 一個 Master Barker 可以有多個 Slave, 0 表示 Master ,大於 0 表示不同Slave 的 ID 。
brokerId = 0
### 與 fileReservedTim巳 參數呼應,表明在幾點做消息刪除動作,默認值 04 表示凌晨 4 點 。
deleteWhen = 04
### 在磁盤上保存消息的時長,單位是小時,自動刪除超時的消息 。
fileReservedTime = 48
### master角色分爲ASYNC_MASTER,SYNC_MASTER
### 關鍵詞 SYNC 和 ASYNC 表示 Master 和 Slave 之間同步消息的機制,
### SYNC 的意思是當 Slave 和 Master 消息同步完成後,再返回發送成功的狀態 。
brokerRole = ASYNC_MASTER
### flushDiskType 表示刷 盤策略,分爲 SYNC_FLUSH 和 ASYNC_FLUSH 兩種,分別代表同步刷盤和異步刷盤 。
### 同步刷盤情況下,消息真正寫人磁盤後再返回成功狀態;
### 異步刷盤情況下,消息寫人 page_cache 後就返回成功狀態 。
flushDiskType = ASYNC_FLUSH
listenPort=10911
storePathRootDir=/home/rocket/store-b-master
### 不配置,會找到docker的地址
### 當前broker監聽的IP
brokerIP1=s158
### 存在broker主從時,在broker主節點上配置了brokerIP2的話,broker從節點會連接主節點配置的brokerIP2來同步。
brokerIP2=s158
broker-slave.conf
### broker-b-slave.conf
namesrvAddr=s157:9876;s158:9876
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
listenPort=11011
storePathRootDir=/home/rocket/store-b-slave
指定conf文件,啓動broker
nohup sh . /bin/mqbroker -c config_file &
管理命令
topic
創建/修改Topic
例
:> sh bin/mqadmin updateTopic -n localhost:9876 -b localhost:10911 -t topic1
刪除 Topic
例
:sh bin/mqadmin deleteTopic -c DefaultCluster -n localhost:9876 -t topic1
更新 Topic 的讀寫權限
查詢 Topic 的路由信息
Topic的路由信息指的是某個Topic所在的Broker相關信息,
客戶端可以通過NameServer來獲取這些信息,本命令一般在調試的時候使用,指令是TopicRoute
例
:sh bin/mqadmin topicRoute -n localhost:9876 -t topic1
查看 Topic 列表信息
例
:sh bin/mqadmin topicList -n localhost:9876
查看 Topic 統計信息
在使用 RocketMQ 的時候,經常需要查看某個 Top ic 的狀態,看看消息的
數量,有多少未處理等,此時可以通過指令 topicStats
來查詢
例
:sh bin/mqadmin topicStatus -n localhost:9876 -t topic1
訂閱組
創建/修改訂閱組
訂閱組可以被自動創建,使用這個命令一般是用來修改訂閱組
。
刪除訂閱組
更新 Broker 配置
Broker有很多的配置信息,在Broker啓動時,可以通過配置文件來指定配置信息。有些配置信息支持在Broker運行的時候動態更改,更改指令是updateBrokerConfig
消息相關
根據時間查詢消息
一條消息被髮送到RocketMQ後,默認會帶上發送的時間戳,所以我們可以根據估計的時間來查詢消息,指令是printMsg
例
:sh bin/mqadmin printMsg -n localhost:9876 -t topic1
根據消息 ID 查詢消息
根據消息ID可以精確定位到某條消息,但是消息ID需要通過其他方式來獲取,
比如可以先用時間來查詢出一些消息,然後定位到要找的具體某個消息,指令是queryMsgByld
例
:sh bin/mqadmin queryMsgById -n localhost:9876 -i C0A8819D00002A9F000000000000421E
根據路徑查看內容:
集羣狀態
查看集羣消息
指令clusterList
用來列出集羣的狀態,看看有哪些Broker在提供服務
例
:sh bin/mqadmin clusterList -n localhost:9876
界面化工具
rocketmq-console
#### 下載源碼
https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console
### 打包部署
> mvn clean package -Dmaven.test.skip=true
> nohup java -jar target/rocketmq-console-ng-1.0.1.jar