Rocketmq原始碼編譯執行
下載
原始碼目錄結構
名稱 | 作用 |
---|---|
broker | broker模組:c和p端訊息儲存邏輯 |
client | 客戶端api:produce、consumer端 接受與傳送api |
common | 公共元件:常量、基類、資料結構 |
tools | 運維tools:命令列工具模組 |
store | 儲存模組:訊息、索引、commitlog儲存 |
namesrv | 服務管理模組:服務註冊topic等資訊儲存 |
remoting | 遠端通訊模組:netty+fastjson |
logappender | 日誌適配模組 |
example | Demo列子 |
filtersrv | 訊息過濾器模組 |
srvutil | 輔助模組 |
filter | 過濾模組:訊息過濾模組 |
distribution | 部署、運維相關zip包中的程式碼 |
openmessaging | 相容openmessaging分散式訊息模組 |
編譯
解壓匯入idea ,修改配置檔案pom.xml,jdk編譯版本為1.8
# 編譯
mvn -Prelease-all -DskipTests clean install -U
複製程式碼
啟動namesrv
進入org.apache.rocketmq.namesrv.NamesrvStartup,執行main方法
會丟擲錯誤, 原因是沒有設定配置ROCKETMQ_HOME檔案路徑
Please set the ROCKETMQ_HOME variable in your environment to match the lo
cation of the RocketMQ installation
複製程式碼
程式碼位置org.apache.rocketmq.namesrv.NamesrvStartup#createNamesrvController,可以修改原始碼,增加rocketHome的配置
也可以通過修改啟動引數設定rocketHome, 在idea的run configurators中配置 VM引數為
-Drocketmq.home.dir=D:\code\java_yuanma\rocketmq\distribution
同時還需要設定user.home,指定日誌檔案路徑
-Duser.home=D:\code\java_yuanma\rocketmq\user.home
還需要配置namesrv的ip和port
然後執行NamesrvStartup#main啟動namesrv
控制檯出現上圖結果,啟動成功
啟動broker
進入org.apache.rocketmq.broker.BrokerStartup,可以執行main方法,同樣需要先配置rocketHome
在org.apache.rocketmq.broker.BrokerStartup#createBrokerController中修改原始碼,增加rocketHome的配置
也可以通過修改啟動引數設定rocketHome, 在idea的run configurators中配置 VM引數為
-Drocketmq.home.dir=D:\code\java_yuanma\rocketmq\distribution
同時還需要設定user.home,指定日誌檔案路徑
-Duser.home=D:\code\java_yuanma\rocketmq\user.home
還需要配置程式引數
‐n 127.0.0.0:9876 -c D:\code\java_yuanma\rocketmq\distribution\conf\broker.conf
然後執行BrokerStartup#main啟動broker
控制檯出現上圖結果,啟動成功如果出現以下情況,ip不對,是因為多網路卡的問題
這時需要修改D:\code\java_yuanma\rocketmq\distribution\conf\broker.conf 此配置檔案
增加brokerIP1 = 127.0.0.1
測試
啟動Producer發訊息,成功
如果出現No Topic Route Info 錯誤:
broker.conf 中增加配置
autoCreateTopicEnable = true
namesrvAddr = 127.0.0.1:9876
複製程式碼