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
![\[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(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)\]](https://i.iter01.com/images/6b0337c89000bff04ff52b92533e4ae0884645c6719c9c23bc35221fbf966599.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)\]](https://i.iter01.com/images/f93dc94e7b03ee09e1e4e3e442ce30600fce0182e8b74338c858ca28c6750bd1.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)\]](https://i.iter01.com/images/141af9985e71020b6bef17975d9b8853df36333d6f59bc85aeac404ed1e49aee.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)\]](https://i.iter01.com/images/91913f22f979a81874f117025f04135e31a5617438a7e00b29fd7b7d63b3803f.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)\]](https://i.iter01.com/images/6975bbe26fc35bfc00fdc983bfe2bf77087c2b84b5477a418be9f17934d158c7.png)
測試
啟動Producer發訊息,成功
如果出現No Topic Route Info 錯誤:
broker.conf 中增加配置
autoCreateTopicEnable = true
namesrvAddr = 127.0.0.1:9876
複製程式碼