Mac 通过 Docker 安装 RocketMQ
RocketMQ 中存在几种部署模式:单机部署,多 Master 部署,多主多从,Dleger 模式。目前是单机部署通过 docker 容器的方式进行部署
初始化目录
mkdir /Users/gyl/docker/rocketmq/data
cd /Users/gyl/docker/rocketmq/data
mkdir logs
mkdir store
mkdir -p broker/conf
mkdir -p broker/logs
mkdir -p broker/store
vim broker/conf/broker.conf
Broker 配置
# 所属集群名称,如果节点较多可以配置多个
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 地址、物理 ip,不能用127.0.0.1、localhost、docker内网ip
brokerIP1 = 192.168.31.162
listenPort=10911
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
maxMessageSize=65536
创建 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/broker/logs:/opt/logs
- ./data/broker/store:/opt/store
- ./data/broker/conf/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:
- 8080: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
启动
cd /Users/gyl/docker/rocketmq
docker-compose up
如看到下图所示代表安装成功
测试
浏览器访问 http://127.0.0.1:8080/#/
如下:
结束语
如果可以访问成功,但提示 org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.31.162:10911> failed,是因为在 Broker 配置 brokerIP1 写错了。
这里是我的 Mac 的 IP 地址,你需要换成自己的。
本作品采用《CC 协议》,转载必须注明作者和本文链接