使用Idea調(diào)試RocketMQ源碼教程
前言
為了更好地了解RocketMQ
,我打算看一看它的源碼了。隨著RocketMQ
5.0版本的發(fā)布,應(yīng)該有更多小伙伴在實(shí)際應(yīng)用中選擇RocketMQ
。那么我們就從這一篇文章開始,逐步來了解RocketMQ
的神秘源碼吧!接下來我們先把調(diào)試環(huán)境搭建好。
下載源碼
我們先把RocketMQ
源碼下載下來,為了方便一點(diǎn),建議小伙伴先fork到自己的倉庫,然后再通過git拉下來。
導(dǎo)入idea
我們通過idea把下載的源碼導(dǎo)入:
有任何報(bào)紅或者錯(cuò)誤先不用管。
代碼編譯
不要直接打開namesrv
找到main
函數(shù)就運(yùn)行,這樣是跑不起來的,會(huì)產(chǎn)生以下錯(cuò)誤:
我們找到源碼所在的本地目錄,或者直接在項(xiàng)目中打開Terminal
:
首先執(zhí)行java -version
檢查安裝的java版本,建議該版本不能超過java 11,測(cè)試下來java 17是編譯不了的。
如果版本沒問題的話,執(zhí)行mvn clean install -DskipTests
編譯該項(xiàng)目。
編譯成功后,結(jié)果如下:
運(yùn)行namesrv
設(shè)置ROCKETMQ_HOME
在啟動(dòng)namesrv
之前,我們要先設(shè)置以下對(duì)應(yīng)的環(huán)境變量ROCKETMQ_HOME
,這個(gè)變量可以直接在啟動(dòng)配置里面設(shè)置。namesrv
在啟動(dòng)的時(shí)候就會(huì)去ROCKETMQ_HOME/conf
里面去找相應(yīng)的配置,比如logback_namesrv.xml
。
- 添加
logback_namesrv.xml
- 我們拉下來的項(xiàng)目中已經(jīng)有現(xiàn)成的
logback_namesrv.xml
,所以我們只需要拷貝一下。從distribution/conf
里面就可以找到logback_namesrv.xml
,直接拷貝到我們指定的ROCKETMQ_HOME/conf
路徑中。
啟動(dòng)
直接在idea中點(diǎn)擊run
或者debug
啟動(dòng)namesrv
服務(wù)。
啟動(dòng)broker
設(shè)置環(huán)境變量ROCKETMQ_HOME
和配置文件
同樣的我們需要設(shè)置環(huán)境變量ROCKETMQ_HOME
,目的和namesrv
一樣,是為了讀取日志配置文件;另一個(gè)-c xx/xx/broker.conf
是為了指定服務(wù)的配置文件。
配置文件
我們的broker啟動(dòng)需要兩個(gè)配置文件,一個(gè)是日志配置文件logback_broker.xml
,一個(gè)是broker.conf
配置。這兩個(gè)配置文件我們都可以從項(xiàng)目中的distribution/conf
中找到,我們把找到的兩個(gè)文件放到指定的路徑下。broker.conf
文件需要做一些簡單的修改:
brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH # namesrv服務(wù)地址 namesrvAddr = 127.0.0.1:9876 # 運(yùn)行自動(dòng)創(chuàng)建topic,避免調(diào)試的時(shí)候麻煩 autoCreateTopicEnable = true # 數(shù)據(jù)存儲(chǔ)路徑 storePathRootDir = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store # commitlog存儲(chǔ)文件 storePathCommitLog = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/commitlog # 消費(fèi)隊(duì)列存儲(chǔ)文件 storePathConsumeQueue = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/consumequeue # 索引存儲(chǔ)文件 storePathIndex = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/index # checkpoint存儲(chǔ)文件 storeCheckpoint = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/checkpoint # abort文件 abortFile = /Users/zouwei/Documents/projects/github_project/rocketmq/data_store/abort
小伙伴們需要根據(jù)自己的實(shí)際情況來修改上述配置。
啟動(dòng)broker
接下里,我們就可以通過idea
來啟動(dòng)broker
了,點(diǎn)擊run
或者debug
按鈕,最后broker啟動(dòng)成功。
為了更好地看到啟動(dòng)效果和相關(guān)配置,小伙伴們可以適當(dāng)修改一下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"/>
,這樣我們就可以在控制臺(tái)中看到相關(guān)的日志了。
小結(jié)
至此,我們就完成了通過idea把RocketMQ
項(xiàng)目導(dǎo)入并運(yùn)行起來的操作,里面確實(shí)有一些比較小的坑,大概總結(jié)一下:
1.代碼拉下來后不能直接運(yùn)行,需要通過mvn clean install -DskipTests
編譯后才能運(yùn)行,否則報(bào)錯(cuò);
2.在編譯前需要檢查java版本,不能是過高的版本,比如java 17;
3.編譯完成后,需要在啟動(dòng)配置中指定相關(guān)的環(huán)境變量ROCKETMQ_HOME
,該變量是為了namesrv
和broker
服務(wù)找到日志配置文件;broker
服務(wù)還要指定broker.conf
配置文件;
4.broker
服務(wù)最好配置一下autoCreateTopicEnable = true
,避免后續(xù)調(diào)試的時(shí)候不方便;
5.所有的配置文件在拉下來的代碼中都可以找到,相關(guān)路徑為distribution/conf
;
6.把日志輸出到控制臺(tái)可以更好地了解服務(wù)啟動(dòng)的狀態(tài);
以上就是使用Idea調(diào)試RocketMQ源碼教程的詳細(xì)內(nèi)容,更多關(guān)于Idea調(diào)試RocketMQ源碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Web服務(wù)器和應(yīng)用服務(wù)器之間的區(qū)別詳解
這篇文章主要介紹了Web服務(wù)器和應(yīng)用服務(wù)器之間的區(qū)別詳解,應(yīng)用服務(wù)器是為客戶端提供對(duì)業(yè)務(wù)邏輯的訪問這種服務(wù)器,根據(jù)客戶端的請(qǐng)求會(huì)將數(shù)據(jù)轉(zhuǎn)化為動(dòng)態(tài)內(nèi)容,一般還需要數(shù)據(jù)庫的支持,應(yīng)用服務(wù)器的搭建很多時(shí)候依賴于應(yīng)用程序的開發(fā)語言,需要的朋友可以參考下2023-07-07碼云(gitee)通過git自動(dòng)同步到阿里云服務(wù)器
當(dāng)我們想要實(shí)現(xiàn)幾個(gè)小伙伴合作開發(fā)同一個(gè)項(xiàng)目,或者建立一個(gè)資源分享平臺(tái)的時(shí)候,GIT就是一個(gè)很好的選擇。這篇文章主要介紹了碼云(gitee)通過git自動(dòng)同步到阿里云服務(wù)器2022-12-12關(guān)于Centos安裝fabric遇到的問題和解決方法
這篇文章給大家分享的是一個(gè)之前碰到的問題了,今天有空寫出來,讓遇到這個(gè)問題的朋友能盡快解決,下面來一起看看吧。2016-09-09如何將pem證書轉(zhuǎn)換為.crt和.key與證書格式介紹
這篇文章主要介紹了如何將pem證書轉(zhuǎn)換為.crt和.key與證書格式介紹,需要的朋友可以參考下2024-01-01輕量級(jí)域名解析服務(wù)器之dnsmasq的介紹與部署
dnsmasq這個(gè)輕量級(jí)的dns服務(wù)器,具有開源,搭建簡單,維護(hù)成本低的優(yōu)點(diǎn),符合生產(chǎn)環(huán)境需求,下面這篇文章主要給大家介紹了關(guān)于輕量級(jí)域名解析服務(wù)器之dnsmasq的介紹與部署的相關(guān)資料,需要的朋友可以參考下2022-07-07服務(wù)器安裝conda環(huán)境遇到代理PROXY問題及解決方案
這篇文章主要為大家介紹了服務(wù)器安裝conda環(huán)境遇到代理PROXY問題及解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Tornado Web服務(wù)器中處理空白字符的解決方案
這篇文章主要介紹了Tornado Web服務(wù)器中處理空白字符的解決方案,本文通過修改Tornado源碼解決這個(gè)問題,需要的朋友可以參考下2015-01-01