<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
為了更好地瞭解RocketMQ
,我打算看一看它的原始碼了。隨著RocketMQ
5.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
編譯該專案。
編譯成功後,結果如下:
設定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
服務。
設定環境變數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
小夥伴們需要根據自己的實際情況來修改上述設定。
接下里,我們就可以通過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
,該變數是為了namesrv
和broker
服務找到紀錄檔組態檔;broker
服務還要指定broker.conf
組態檔;
4.broker
服務最好設定一下autoCreateTopicEnable = true
,避免後續偵錯的時候不方便;
5.所有的組態檔在拉下來的程式碼中都可以找到,相關路徑為distribution/conf
;
6.把紀錄檔輸出到控制檯可以更好地瞭解服務啟動的狀態;
以上就是使用Idea偵錯RocketMQ原始碼教學的詳細內容,更多關於Idea偵錯RocketMQ原始碼的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45