Idea除錯Rocketmq原始碼編譯執行

Java2B發表於2020-01-05

Rocketmq原始碼編譯執行

下載

github下載原始碼,比較慢,也可以從gitee下載

原始碼目錄結構

名稱 作用
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

\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-0ncNb2iI-1578200015945)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113161603998.png)\]

控制檯出現上圖結果,啟動成功

啟動broker

進入org.apache.rocketmq.broker.BrokerStartup,可以執行main方法,同樣需要先配置rocketHome

在org.apache.rocketmq.broker.BrokerStartup#createBrokerController中修改原始碼,增加rocketHome的配置

\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-keDbDiZZ-1578200015946)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113161934004.png)\]

也可以通過修改啟動引數設定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

\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-4q0fckkH-1578200015946)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113162243329.png)\]

然後執行BrokerStartup#main啟動broker

\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ohWxpbgo-1578200015947)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113162341378.png)\]
控制檯出現上圖結果,啟動成功

如果出現以下情況,ip不對,是因為多網路卡的問題

在這裡插入圖片描述

這時需要修改D:\code\java_yuanma\rocketmq\distribution\conf\broker.conf 此配置檔案

增加brokerIP1 = 127.0.0.1

\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-MOBRa8ul-1578200015948)(F:/2019/%E4%B9%A6/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%862/rocketmq/idea%E8%B0%83%E8%AF%95rocketmq%E6%BA%90%E7%A0%81.assets/image-20191113162710590.png)\]

測試

啟動Producer發訊息,成功

如果出現No Topic Route Info 錯誤:

broker.conf 中增加配置

autoCreateTopicEnable = true
namesrvAddr = 127.0.0.1:9876
複製程式碼

相關文章