准备工作
在你想要的地方创建文件夹,在该文件夹下打开Terminal,以下命令会构造该相对路径。
mac 和 linux 运行下列命令
mkdir -p ./data/namesrv/logs
mkdir -p ./data/broker1/conf
mkdir -p ./data/broker1/logs
mkdir -p ./data/broker1/store
windows运行以下命令才会创建相对路径,否则会直接在磁盘根目录下创建。
mkdir ./data/namesrv/logs
mkdir ./data/broker1/conf
mkdir ./data/broker1/logs
mkdir ./data/broker1/store
编辑Broker配置文件
在上述创建的data/broker1/conf文件夹下创建broker.conf,内容如下,修改brokerIP1即可。
# mq集群名称
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-master
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 24
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
#设置broker节点所在服务器的ip地址(公网IP)
#liux、mac系统使用ifconfig,win系统用ipconfig查主机ip
brokerIP1 = 本机ip
编写docker-compose.xml(修改volumes)
windows下的文件内容为,需要写绝对路径,否则会报错。
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如下,此时可以使用相对路径。
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创建日志还需要有写权限,因此需要执行下列命令。
chmod -R 777./data
执行docker-compose安装命令
docker-compose up -d
FAQ:
如需打开防火墙,请参考文章[1]。
参考文章:
[1] docker-compose 安装 RocketMQ 4.9.X (apache官方镜像) namesrv broker 与可视化控制台 console_疯狂的狮子Li的博客-CSDN博客_rocketmq 官方镜像