首頁 > 軟體

使用Idea偵錯RocketMQ原始碼教學

2022-11-21 14:02:53

前言

為了更好地瞭解RocketMQ,我打算看一看它的原始碼了。隨著RocketMQ5.0版本的釋出,應該有更多小夥伴在實際應用中選擇RocketMQ。那麼我們就從這一篇文章開始,逐步來了解RocketMQ的神祕原始碼吧!接下來我們先把偵錯環境搭建好。

下載原始碼

原始碼地址:github.com/apache/rock…

我們先把RocketMQ原始碼下載下來,為了方便一點,建議小夥伴先fork到自己的倉庫,然後再通過git拉下來。

匯入idea

我們通過idea把下載的原始碼匯入:

有任何報紅或者錯誤先不用管。

程式碼編譯

不要直接開啟namesrv找到main函數就執行,這樣是跑不起來的,會產生以下錯誤:

我們找到原始碼所在的本地目錄,或者直接在專案中開啟Terminal:

首先執行java -version檢查安裝的java版本,建議該版本不能超過java 11,測試下來java 17是編譯不了的。

如果版本沒問題的話,執行mvn clean install -DskipTests編譯該專案。

編譯成功後,結果如下:

執行namesrv

設定ROCKETMQ_HOME

在啟動namesrv之前,我們要先設定以下對應的環境變數ROCKETMQ_HOME,這個變數可以直接在啟動設定裡面設定。namesrv在啟動的時候就會去ROCKETMQ_HOME/conf裡面去找相應的設定,比如logback_namesrv.xml

  • 新增logback_namesrv.xml
  • 我們拉下來的專案中已經有現成的logback_namesrv.xml,所以我們只需要拷貝一下。從distribution/conf裡面就可以找到logback_namesrv.xml,直接拷貝到我們指定的ROCKETMQ_HOME/conf路徑中。

啟動

直接在idea中點選run或者debug啟動namesrv服務。

啟動broker

設定環境變數ROCKETMQ_HOME和組態檔

同樣的我們需要設定環境變數ROCKETMQ_HOME,目的和namesrv一樣,是為了讀取紀錄檔組態檔;另一個-c xx/xx/broker.conf是為了指定服務的組態檔。

組態檔

我們的broker啟動需要兩個組態檔,一個是紀錄檔組態檔logback_broker.xml,一個是broker.conf設定。這兩個組態檔我們都可以從專案中的distribution/conf中找到,我們把找到的兩個檔案放到指定的路徑下。broker.conf檔案需要做一些簡單的修改:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# namesrv服務地址
namesrvAddr = 127.0.0.1:9876
# 執行自動建立topic,避免偵錯的時候麻煩
autoCreateTopicEnable = true
# 資料儲存路徑
storePathRootDir = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store
# commitlog儲存檔案
storePathCommitLog = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/commitlog
# 消費佇列儲存檔案
storePathConsumeQueue = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/consumequeue
# 索引儲存檔案
storePathIndex = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/index
# checkpoint儲存檔案
storeCheckpoint = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/checkpoint
# abort檔案
abortFile = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/abort

小夥伴們需要根據自己的實際情況來修改上述設定。

啟動broker

接下里,我們就可以通過idea來啟動broker了,點選run或者debug按鈕,最後broker啟動成功。

為了更好地看到啟動效果和相關設定,小夥伴們可以適當修改一下logback_broker.xml

    <logger name="RocketmqBroker" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="RocketmqBrokerAppender"/>
    </logger>

RocketmqBroker裡面加上<appender-ref ref="STDOUT"/>,這樣我們就可以在控制檯中看到相關的紀錄檔了。

小結

至此,我們就完成了通過idea把RocketMQ專案匯入並執行起來的操作,裡面確實有一些比較小的坑,大概總結一下:

1.程式碼拉下來後不能直接執行,需要通過mvn clean install -DskipTests編譯後才能執行,否則報錯;

2.在編譯前需要檢查java版本,不能是過高的版本,比如java 17;

3.編譯完成後,需要在啟動設定中指定相關的環境變數ROCKETMQ_HOME,該變數是為了namesrvbroker服務找到紀錄檔組態檔;broker服務還要指定broker.conf組態檔;

4.broker服務最好設定一下autoCreateTopicEnable = true,避免後續偵錯的時候不方便;

5.所有的組態檔在拉下來的程式碼中都可以找到,相關路徑為distribution/conf

6.把紀錄檔輸出到控制檯可以更好地瞭解服務啟動的狀態;

以上就是使用Idea偵錯RocketMQ原始碼教學的詳細內容,更多關於Idea偵錯RocketMQ原始碼的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com