RocketMQ基于Docker方式安裝步驟
- 一、Linux 環境
- 二、RocketMQ鏡像版本
- 2.1、三個鏡像
- 三、安裝步驟
- 3.1、建構目錄如下圖
- 3.2、啟動容器
- 四、Demo操作
- 五、關閉服務
一、Linux 環境
JDK + Docker-Compose
二、RocketMQ鏡像版本
2.1、三個鏡像
foxiswho/rocketmq:server,服務端
foxiswho/rocketmq:broker,節點
styletang/rocketmq-console-ng,web端,便于監控
也就是說,我要同時安裝這三個鏡像,才算是RocketMQ的完整安裝
Docker-Compose可操作多個鏡像的安裝
三、安裝步驟
3.1、建構目錄如下圖
其中logs和store是建構過程中才出現的,是以,隻需要在指定的目錄下建構broker.conf 和docker-compose.yml即可,這兩個配置的具體配置如下
broker.conf
# 是否允許 Broker 自動建立訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
# Broker 對外服務的監聽端口
listenPort=10911
# 删除檔案時間點,預設淩晨4點
deleteWhen=04
# 檔案保留時間,預設48小時
fileReservedTime=120
# commitLog 每個檔案的大小預設1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每個檔案預設存 30W 條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 檢測實體檔案磁盤空間
diskMaxUsedSpaceRatio=88
# 存儲路徑
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存儲路徑
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消費隊列存儲
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存儲路徑
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 檔案存儲路徑
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 檔案存儲路徑
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# - ASYNC_MASTER 異步複制Master
# - SYNC_MASTER 同步雙寫Master
# - SLAVE
brokerRole=ASYNC_MASTER
# 刷盤方式
# - ASYNC_FLUSH 異步刷盤
# - SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
# 發消息線程池數量
# sendMessageThreadPoolNums=128
# 拉消息線程池數量
# pullMessageThreadPoolNums=128
docker-compose.yml
version: '3.5'
services:
rmqnamesrv:
image: foxiswho/rocketmq:server
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/logs:/opt/logs
- ./data/store:/opt/store
networks:
rmq:
aliases:
- rmqnamesrv
rmqbroker:
image: foxiswho/rocketmq:broker
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
volumes:
- ./data/logs:/opt/logs
- ./data/store:/opt/store
- ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf
environment:
NAMESRV_ADDR: "rmqnamesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: mqbroker -c /etc/rocketmq/broker.conf
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqbroker
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 10801:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- rmqnamesrv
networks:
rmq:
aliases:
- rmqconsole
networks:
rmq:
name: rmq
driver: bridge
要注意,這三個鏡像的端口映射,不要使用正在運作的端口,還有就是當你更改端口時,要删除鏡像(我第一次就是使用了正在運作的端口,當我發現改了端口,run的時候,還是會有異常,後來 docker rm container才可以),
3.2、啟動容器
docker-compose up -d
可檢視三個容器,建構完成,這時我們浏覽器打開通路
ip:端口(console的端口)即ip:10801