RocketMQ原始碼分析(一)之除錯環境搭建
阿新 • • 發佈:2018-12-20
版本宣告
- 基於
rocketmq-all-4.3.1
版本 - 所有分析是根據自己的理解,因為不是RocketMQ的原始開發者,所以肯定會存在分析不正確的地方,如有發現歡迎指正,謝謝!
- 規定
$ROCKETMQ_SOURCE
為原始碼根目錄
原始碼除錯環境搭建
- 克隆程式碼到本地,使用idea開啟如下圖
- 原始碼目錄結構
broker
:整個mq的核心,他能夠接受producer和consumer的請求,並呼叫store層服務對訊息進行處理。HA服務的基本單元,支援同步雙寫,非同步雙寫等模式。client
::RocketMQ客戶端實現common
:一些模組間通用的功能類,比如一些配置檔案、常量。distribution
example
:官方提供的例子filter
,過濾器,用於服務端 SQL92 的過濾方式logappender
:日誌相關namesrv
:可以理解成註冊中心,每個 broker 都會在這裡註冊,client 也會從這裡獲取 broker 的相關資訊remoting
:基於netty的底層通訊實現,所有服務間的互動都基於此模組。srvutil
:解析命令列的工具類。store
:儲存層實現(負責訊息的儲存和讀取),同時包括了索引服務,高可用HA服務實現。tools
:mq叢集管理工具,提供了訊息查詢等功能。
啟動NameServer
-
檢視
$ROCKETMQ_SOURCE/distribution/bin/mqnamesrv.sh
${ROCKETMQ_HOME}/bin/runserver.sh
這個指令碼來啟動org.apache.rocketmq.namesrv.NamesrvStartup
這類的。因為我們不是二進位制安裝包啟動,所以如果我們要找到這個指令碼,這裡的${ROCKETMQ_HOME}
必須設定為原始碼目錄的$ROCKETMQ_SOURCE/distribution
才可以...省略... export ROCKETMQ_HOME sh ${ROCKETMQ_HOME}/bin/runserver.sh org.apache.rocketmq.namesrv.NamesrvStartup
-
檢視
$ROCKETMQ_SOURCE/distribution/runserver.sh
檔案,這個指令碼主要是JVM的配置... 省略 ... JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" ... 省略 ...
-
idea配置
NamesrvStartup
類啟動引數,NamesrvConfig
需要通過$ROCKETMQ_HOME
來讀取conf目錄的配置,所以這裡的$ROCKETMQ_HOME
設定為$ROCKET_SOURCE/distribution
啟動Broker
-
檢視
$ROCKETMQ_SOURCE/distribution/bin/mqbroker.sh
可以看到如下命令,${ROCKETMQ_HOME}/bin/runbroker.sh
這個指令碼來啟動org.apache.rocketmq.broker.BrokerStartup
,與NameServer啟動流程類似... 省略... export ROCKETMQ_HOME sh ${ROCKETMQ_HOME}/bin/runbroker.sh org.apache.rocketmq.broker.BrokerStartup [email protected]
-
檢視
$ROCKETMQ_SOURCE/distribution/runbroker.sh
,此指令碼主要也是JVM配置... 省略... JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g" ... 省略...
-
idea配置
BrokerStartup
啟動引數