RocketMQ源碼 — 一、 quikstart


RocketMQ quikstart

  • 獲取源碼
    git clone https://github.com/alibaba/RocketMQ.git
  • 編譯打包
    cd RocketMQ
    bash install.sh

這是一個maven工程,官方給出了編譯打包的腳本install.sh,主要就是

# mvn 編譯打包
mvn -Dmaven.test.skip=true clean package install assembly:assembly -U
# 建立一個軟連接(快捷方式)
ln -s target/alibaba-rocketmq-broker/alibaba-rocketmq devenv
  • 生成idea工程文件
    生成工程文件就可以使用IDE直接打開
mvn idea:idea
# 生clipse工程文件
mvn eclipse:eclipse
  • 設置環境變量
# 上面創建了devenv軟連接
cd devenv
# 將devenv目錄作為ROCKETMQ_HOME,其實也可以作為jvm啟動參數傳入,broker和nameServer啟動的時候需要這個目錄參數,默認取的是jvm啟動的時候rocketmq.home.dir的值
echo "ROCKETMQ_HOME=`pwd`" >> ~/.bash_profile
# 讓上面的環境變量起作用
source ~/.bash_profile
  • 啟動nameServer和broker
    啟動NameServer
cd bin
chmod u+x mqnamesrv
bash mqnamesrv

如果啟動成功顯示

Listening for transport dt_socket at address: 9555
The Name Server boot success. serializeType=JSON

啟動腳本mqnamesrv掉用的是runserver.sh,其實就是執行NamesrvStart這個類,這個類負責啟動nameServer,然后在啟動jvm的時候添加一堆參數,注意runserver.sh

  1. 啟動jvm的時候注意jvm各個內存區域的大小(如果電腦內存較小,而且不是用在生產環境可以調小一些)
  2. 因為是jvm,可以打開遠程調試端口把下一句話的注釋去掉,就可以進行遠程調試了
# 去掉下面這句話前面的#
JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"

啟動broker

chmod u+x mqbroker
bash mqbroker -n localhost:9876

和nameServer啟動類似mqbroker調用了runbroker.sh來啟動jvm運行BrokerStart類,在里面添加各種參數,也可以通過去掉上面那句話來進行遠程調試(注意遠程調試端口不要和上面nameServer的沖突了)。

  • 運行example
  1. 設置nameServer的地址到環境變量中,因為Producer和Consumer都需要知道nameServer的地址才能進一步獲取broker的地址
# 設置到環境變量
export NAMESRV_ADDR=localhost:9876
# 在Producer和Consumer類中設置
producer.setNamesrvAddr("localhost:9876");
consumer.setNamesrvAddr("localhost:9876");
  1. 發送消息和接受消息
    在IDE中打開這個工程(上面已經生成工程文件),然后直接運行Producer和Consumer兩個類的main方法就可以了。
    也可以通過提供的腳本運行
bash tools.sh com.alibaba.rocketmq.example.quickstart.Producer
bash tools.sh com.alibaba.rocketmq.example.quickstart.Consumer

模塊划分

參考

RocketMQ共包含9個模塊

  • rocketmq-common:通用的枚舉、基類方法、或者數據結構,包名有admin、consumer、filter、hook、message
  • rocketmq-remoting:使用netty的客戶端、服務端,使用fastjson序列化,自定義二進制協議
  • rocketmq-srvutil:只有一個ServerUtil類,只提供Server程序依賴,盡可能減少客戶端依賴
  • rocketmq-store:消息存儲,索引,consumerLog,commitLog等
  • rocketmq-client:消息發送和接收,包含consumer和producer
  • rocketmq-filtersrv:消息過濾器
  • rocketmq-broker:服務端,接受消息,存儲消息,consumer拉取消息
  • rocketmq-tools:命令行工具
  • rocketmq-namesrv:NameServer,類似服務注冊中心,broker在這里注冊,consumer和producer在這里找到broker地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM