前言
最近做項目,boss要求將kafka切換爲rocket mq,玩了一下rocketmq的動態切換。發現rocketmq能力還挺強大的,首先Windows下搭建一套環境。
1. 下載mq
訪問apache的官網下載rocketmq,目前最新版本是4.5.1,下載bin版本。當然也可以下載source版本自己編譯。
下載完後,解壓縮
從lib的jar可以看出rocketmq是純java開發的,貌似阿里主要使用java開發。
2. rocketmq架構圖
可以看到rocketmq主要有name server與broker組成,與producer、consumer組成生產者,消費者。name server是無狀態的元數據管理中心集羣,用於替代zookeeper的作用。
2.1 準備
配置JAVA_HOME和ROCKETMQ_HOME
2.2 啓動name server
執行cmd,cd到bin目錄,執行mqnamesrv,然後?
由於使用CMS回收器,筆者因爲JDK1.8下載需要登錄,搞了一個JDK12,悲劇了
執行 mqnamesrv
linux同理,配置好JAVA_HOME即可,linux命令
nohup ./mqnamesrv &
2.3 執行broker
真正到存儲消息的隊列節點了,啓動broker,這裏自動創建topic,又不是生產,沒必要申請
mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true
linux,報了內存不足
nohup ./mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true &
居然要8G空間,我汗,我是2G虛擬機
設置一下吧,由於JDK8,需要配置元數據區meta
對runserver.sh 、runbroker.sh啓動腳本中對於內存的限制,比如改成如下示例:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn192m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
當然筆者比較拮据,機器好可以配置高點
Linux默認namesrv使用CMS收集器,分配4G
broker使用G1收集器,分配8G,筆者做測試都分配512M,其實namesrv可以配置低一點,比如256M;broker分配高一些,因爲broker負載重,當然做測試就無所謂了,隨時可以調整。
修改後啓動成功
3. rocketmq console
rocketmq有開源的管理端:https://github.com/apache/rocketmq-externals,支持很多功能,最常用的是console
打開rocketmq-console,配置好name server,元數據集羣有broker的信息,producer與consumer也是這裏獲取的。
執行後,訪問:http:localhost:8180/
還支持中文,良心
總結
搭建rocketmq很簡單,可以看出rocketmq的設計從很多方面延用了kafka的設計。下一章講架構設計與kafka的區別,實戰api。api集成spring boot使用