RocketMQ爬坑記(一):安裝使用

1. RocketMQ簡介

RocketMQ作爲一款純java、分佈式、隊列模型的開源消息中間件(阿里的說法是不遵循任何規範的,所以不能完全用JMS的那一套東西來看它),經歷了淘寶雙十一的洗禮,在功能和性能上據說是遠超ActiveMQ。

RocketMQ簡介,其中對rocketMQ的歷史及特性做了簡要的介紹。

這裏再分享下,阿里中間技術團隊官方博客,其中主要描述的都是概念性的東西,可以幫你更加深入瞭解RocketMQ的架構以及使用原理。

本文更多的偏向應用方面,描述的是筆者在使用RocketMQ遇到的一些問題。

接下來,開始聊聊RocketMQ的安裝過程;參考RocketMQ官方文檔

2. RocketMQ安裝

2.1 Linux下安裝

2.1.1 安裝條件

  • 64位JDK 1.8+;
  • Maven 3.2.x;
  • Git(這裏不必須,主要運來獲取RocketMQ的壓縮包)

2.1.2 發佈下載和構建

單擊此處下載4.3.0源代碼版本。您也可以從這裏下載二進制版本。

現在執行以下命令來解壓縮4.3.0源代碼版本並構建二進制工件。

  > unzip rocketmq-all-4.3.0-source-release.zip
  > cd rocketmq-all-4.3.0/
  > mvn -Prelease-all -DskipTests clean install -U
  > cd distribution/target/apache-rocketmq

解壓完成之後:apache-rocketmq 目錄的結構如下:

rocketmq目錄結構

主要關注的是bin目錄下存放的是啓動、停止等一些腳本,conf目錄存放配置文件等信息;

對於nameserver和broker日誌位置都可以手動配置,具體配置文件就是conf下的logback_broker.xml和logback_namesrv.xml;

這裏在conf目錄下新增 broker-a.properties文件

文件內容如下:

#Broker所屬哪個集羣,默認【DefaultCluster】
terName=DefaultCluster
#本機主機名,需要唯一
brokerName=broker-a
#BrokerId,必須是大等於0的整數,0表示Master,>0表示Slave,一個Master可以掛多個Slave,Master與Slave通過BrokerName來配對,默認【0】
brokerId=0
#刪除文件時間點,默認凌晨4點
deleteWhen=04
#文件保留時間,默認48小時
fileReservedTime=48
#Broker的角色 - ASYNC_MASTER 異步複製Master - SYNC_MASTER 同步雙寫Master - SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式 - ASYNC_FLUSH 異步刷盤 - SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#Name Server地址 如果是集羣方式以;隔開
namesrvAddr=hadoop03:9876
storePathRootDir=/apps/rocketmq/alibaba-rocketmq/store
storePathCommitLog=/apps/rocketmq/alibaba-rocketmq/store/commitlog
#是否允許Broker自動創建Topic,建議線下開啓,線上關閉,默認【true】
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
#Broker對外服務的監聽端口,默認【10911】
#listenPort=10911

這裏的部署主要採用單機部署;更多的集羣部署方式見 雙寫模式部署RocketMQ.

2.1.3 啓動namesrv和broker

接下來啓動namesrv和broker;

啓動namesrv:

  > nohup sh bin/mqnamesrv &
  > tail -f ~/logs/rocketmqlogs/namesrv.log
  The Name Server boot success...

當出現,The Name Server boot success... 時代表啓動namesrv成功;

啓動broker:

  > nohup sh mqbroker -c ../conf/broker-a.properties &
  > tail -f ~/logs/rocketmqlogs/broker.log 
  The broker[%s, 172.30.30.233:10911] boot success...

當出現,The broker[%s, 172.30.30.233:10911] boot success... 代表啓動broker成功.

此時可以用jps查詢進程:

運行狀態

2.1.4 關閉namesrv和broker

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

坑1:啓動了namesrv,但死活啓動不了broker.

這個時候用守護進程啓動broker,也沒有日誌,所以此時不要用守護進程啓動,直接 ./mqbroker 此時就能看到錯誤信息,提示你內存大小不足;

在網上找了下原因,才發現坑爹的RocketMQ初始化要求可用內存必須4~8G左右,而我的機器沒有那麼大的內存。

解決方法:

修改bin 目錄下 runserver.shrunbroker.sh 兩個文件,修改其中內容如下:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

主要是修改適合你機器的內存大小;

坑2:brokerIP1配置問題

強制指定本機IP,需要根據每臺機器進行修改。官方介紹可爲空,系統默認自動識別;但多網卡時IP可能讀取錯誤;

broker自動尋的地址是172.17.0.1,而且深深的刻在了默認配置文件裏,雖然我關掉了這個網絡,配置文件裏還是這個地址,然後我重新寫了個配置文件,強制指定broker所在的機器ip爲192.168.x.x,重啓服務,就大功告成了!

2.2 Windows下安裝

參照RocketMQ在Windows平臺下環境搭建

安裝下載構建和Linux下一致;得到構建後的apache-rocketmq.

進入bin目錄下,執行

start mqnamesrv.cmd (彈出的框不要關閉)

start mqbroker.cmd -n 127.0.0.1:9876 (彈出的框不要關閉)

至此就啓動完了;

2.3 安裝MQ監控平臺

2.3.1 下載

github地址,從github上下載源碼;

進入到rocketmq-console/src/main/resources目錄下,修改application.properties文件

server.contextPath=
server.port=8080
#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.config=classpath:logback.xml
#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
rocketmq.config.namesrvAddr=
#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
rocketmq.config.isVIPChannel=
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true

主要是配置rocketmq.config.namesrvAddr 地址 ,如果不配置,則默認是localhost:9876

2.3.2 編譯

進入到rocketmq-console(pom文件所在目錄)下執行

mvn clean package -Dmaven.test.skip=true

注意:不要直接使用mvn package,會提示很多錯誤

執行完畢後在target目錄下會生成一個jar包,執行jar包

java -jar XXX.jar

在瀏覽器訪問:ip:端口(配置的端口),即可。如圖:

控制檯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章