網站首頁 編程語言 正文
前言
為了更好地了解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
編譯該項目。
編譯成功后,結果如下:
運行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
,該變量是為了namesrv
和broker
服務找到日志配置文件;broker
服務還要指定broker.conf
配置文件;
4.broker
服務最好配置一下autoCreateTopicEnable = true
,避免后續調試的時候不方便;
5.所有的配置文件在拉下來的代碼中都可以找到,相關路徑為distribution/conf
;
6.把日志輸出到控制臺可以更好地了解服務啟動的狀態;
原文鏈接:https://juejin.cn/post/7166175844145037319
相關推薦
- 2022-01-09 出現Got permission denied while trying to connect to
- 2022-05-13 Python實現簡易的圖書管理系統_python
- 2022-08-07 Python繪制交通流折線圖詳情_python
- 2022-04-01 將numpy array保存為nii格式 itk-snap打不開
- 2022-12-06 Python?list?append方法之給列表追加元素_python
- 2022-08-14 python?open函數中newline參數實例詳解_python
- 2022-11-28 一文帶你搞懂Golang結構體內存布局_Golang
- 2025-02-10 window11 系統安裝 yarn
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支