準(zhǔn)備工作
在你想要的地方創(chuàng)建文件夾撵彻,在該文件夾下打開Terminal钓株,以下命令會(huì)構(gòu)造該相對路徑。
mac 和 linux 運(yùn)行下列命令
mkdir -p ./data/namesrv/logs
mkdir -p ./data/broker1/conf
mkdir -p ./data/broker1/logs
mkdir -p ./data/broker1/store
windows運(yùn)行以下命令才會(huì)創(chuàng)建相對路徑陌僵,否則會(huì)直接在磁盤根目錄下創(chuàng)建轴合。
mkdir ./data/namesrv/logs
mkdir ./data/broker1/conf
mkdir ./data/broker1/logs
mkdir ./data/broker1/store
編輯Broker配置文件
在上述創(chuàng)建的data/broker1/conf文件夾下創(chuàng)建broker.conf,內(nèi)容如下碗短,修改brokerIP1即可受葛。
# mq集群名稱
brokerClusterName = DefaultCluster
#broker名稱,master和slave使用相同的名稱,表明他們的主從關(guān)系
brokerName = broker-master
#0表示Master总滩,大于0表示不同的slave
brokerId = 0
#表示幾點(diǎn)做消息刪除動(dòng)作纲堵,默認(rèn)是凌晨4點(diǎn)
deleteWhen = 04
#在磁盤上保留消息的時(shí)長,單位是小時(shí)
fileReservedTime = 24
#有三個(gè)值:SYNC_MASTER咳秉,ASYNC_MASTER婉支,SLAVE;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機(jī)制澜建;
brokerRole = ASYNC_MASTER
#刷盤策略向挖,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤和異步刷盤炕舵;SYNC_FLUSH消息寫入磁盤后才返回成功狀態(tài)何之,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
#設(shè)置broker節(jié)點(diǎn)所在服務(wù)器的ip地址(公網(wǎng)IP)
#liux咽筋、mac系統(tǒng)使用ifconfig溶推,win系統(tǒng)用ipconfig查主機(jī)ip
brokerIP1 = 本機(jī)ip
編寫docker-compose.xml(修改volumes)
windows下的文件內(nèi)容為,需要寫絕對路徑奸攻,否則會(huì)報(bào)錯(cuò)蒜危。
services:
namesrv:
image: apache/rocketmq:4.9.4
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- D:/Temp/mq_path/data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
broker:
image: apache/rocketmq:4.9.4
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- D:/Temp/mq_path/data/broker/logs:/home/rocketmq/logs
- D:/Temp/mq_path/data/broker/store:/home/rocketmq/store
- D:/Temp/mq_path/data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
environment:
NAMESRV_ADDR: "namesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 18080:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- namesrv
mac和linux使用的docker-compose.xml如下,此時(shí)可以使用相對路徑睹耐。
services:
namesrv:
image: apache/rocketmq:4.9.4
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
broker:
image: apache/rocketmq:4.9.4
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- ./data/broker1/logs:/home/rocketmq/logs
- ./data/broker1/store:/home/rocketmq/store
- ./data/broker1/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf
environment:
NAMESRV_ADDR: "namesrv:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv
rmqconsole:
image: styletang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 18080:8080
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
depends_on:
- namesrv
對于Mac和linux創(chuàng)建日志還需要有寫權(quán)限辐赞,因此需要執(zhí)行下列命令。
chmod -R 777./data
執(zhí)行docker-compose安裝命令
docker-compose up -d
FAQ:
如需打開防火墻硝训,請參考文章[1]响委。
參考文章:
[1] docker-compose 安裝 RocketMQ 4.9.X (apache官方鏡像) namesrv broker 與可視化控制臺(tái) console_瘋狂的獅子Li的博客-CSDN博客_rocketmq 官方鏡像