RocketMQ 安裝


鏡像方式安裝

首先再把上一接中提到的 RocketMQ 部署架構圖看一下。

從圖中可以看出,RocketMQ的服務端分為兩塊 Name Server 和 Broker。

  • Name Server:是一個幾乎無狀態節點,可集群部署,在消息隊列RocketMQ版中提供命名服務,更新和發現Broker服務。
  • Broker:消息中轉角色,負責存儲消息,轉發消息。分為Master Broker和Slave Broker,一個Master Broker可以對應多個Slave Broker,但是一個Slave Broker只能對應一個Master Broker。Broker啟動后需要完成一次將自己注冊至Name Server的操作;隨后每隔30s定期向Name Server上報Topic路由信息。

啟動NameServer服務

創建NameServer數據存儲路徑:

mkdir -p /home/rocketmq/data/namesrv/logs /home/rocketmq/data/namesrv/store

構建 NameServer 容器:

docker run -d \
--name rmqnamesrv \
-p 9876:9876 \
-v /home/rocketmq/data/namesrv/logs:/root/logs \
-v /home/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv

啟動Broker服務

創建Broker數據存儲路徑:

mkdir -p /home/rocketmq/data/broker/logs /home/rocketmq/data/broker/store /home/rocketmq/conf

在/home/rocketmq/conf 目錄下創建 broker.conf 文件,內容如下:

# 所屬集群名稱,如果節點較多可以配置多個
brokerClusterName = DefaultCluster
#broker名稱,master和slave使用相同的名稱,表明他們的主從關系
brokerName = broker-a
#0表示Master,大於0表示不同的slave
brokerId = 0
#表示幾點做消息刪除動作,默認是凌晨4點
deleteWhen = 04
#在磁盤上保留消息的時長,單位是小時
fileReservedTime = 48
#有三個值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和異步表示Master和Slave之間同步數據的機制;
brokerRole = ASYNC_MASTER
#刷盤策略,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤和異步刷盤;SYNC_FLUSH消息寫入磁盤后才返回成功狀態,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 設置broker節點所在服務器的ip地址
brokerIP1 = 172.16.250.129

構建 Broker 容器:

docker run -d  \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v  /home/rocketmq/data/broker/logs:/root/logs \
-v  /home/rocketmq/data/broker/store:/root/store \
-v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf 

控制台

構建rockermq-console容器:

docker run -d \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.250.129:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false \
-Duser.timezone='Asia/Shanghai'" \
-v /etc/localtime:/etc/localtime \
-p 9999:8080 \
pangliang/rocketmq-console-ng

訪問 http://172.16.250.129:9999/#/cluster 如下圖說明安裝成功:

二進制包方式安裝

下載地址:

https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip

環境要求:

  • Linux64位系統
  • JDK1.8(64位)

啟動NameServer

# 1.啟動NameServer
nohup sh bin/mqnamesrv &
# 2.查看啟動日志
tail -f ~/logs/rocketmqlogs/namesrv.log

啟動Broker

# 1.啟動Broker
nohup sh bin/mqbroker -n localhost:9876 &
# 2.查看啟動日志
tail -f ~/logs/rocketmqlogs/broker.log 

若啟動報內存不足啟動失敗,需要編輯如下兩個配置文件,修改JVM內存大小:

vi runbroker.sh
vi runserver.sh
  • 參考配置:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m  -XX:MaxMetaspaceSize=320m"

測試RocketMQ

發送消息

進入 rmqnamesrv 容器:

[root@localhost ~]# docker exec -it 95a52e07151c bash
[root@95a52e07151c bin]#  
# 1.設置環境變量
export NAMESRV_ADDR=172.16.250.129:9876  
# 2.使用安裝包的Demo發送消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer

消費消息

# 1.設置環境變量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer


免責聲明!

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



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