M1安装RocketMQ消息队列
一、环境要求
请先确认:
docker -v
docker compose version
如无 compose
,执行:
brew install docker-compose
二、创建 docker-compose.yml
在任意目录(比如 ~/rocketmq
)下创建文件:
mkdir ~/rocketmq && cd ~/rocketmq
nano docker-compose.yml
写入以下内容(已针对 M1 优化)👇
version: '3.8'
services:namesrv:image: apache/rocketmq:5.3.0container_name: rmqnamesrvports:- "9876:9876"environment:- JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn128mcommand: sh mqnamesrvrestart: unless-stoppedbroker:image: apache/rocketmq:5.3.0container_name: rmqbrokerdepends_on:- namesrvports:- "10909:10909"- "10911:10911"- "10912:10912"environment:- NAMESRV_ADDR=namesrv:9876- JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn256m- BROKER_MEM=512mvolumes:- ./store:/home/rocketmq/store- ./logs:/home/rocketmq/logs- ./conf/broker.conf:/home/rocketmq/conf/broker.confcommand: sh mqbroker -c /home/rocketmq/conf/broker.confrestart: unless-stoppeddashboard:image: apacherocketmq/rocketmq-dashboard:latestcontainer_name: rmqdashboarddepends_on:- namesrv- brokerports:- "8080:8080"environment:- JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dserver.port=8080restart: unless-stopped
三、创建 broker.conf 配置文件
在 ~/rocketmq/conf/
下新建配置:
mkdir conf
nano conf/broker.conf
内容如下(适配单机 M1 使用):
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
listenPort = 10911
storePathRootDir = /home/rocketmq/store
storePathCommitLog = /home/rocketmq/store/commitlog
autoCreateTopicEnable=true
四、启动 RocketMQ 集群
在 ~/rocketmq
目录执行:
docker compose up -d
查看容器运行状态:
docker ps
应看到三个容器:
rmqnamesrv
rmqbroker
rmqdashboard
五、验证服务
查看 NameServer 日志
docker logs -f rmqnamesrv
输出包含:
The Name Server boot success...
查看 Broker 日志
docker logs -f rmqbroker
输出包含:
The broker[broker-a, 172.18.0.x:10911] boot success...
查看 Dashboard
浏览器访问:
http://localhost:8080
如果一切正常,你会看到 RocketMQ Dashboard 界面。
六、测试命令行发送消息(可选)
进入 broker 容器:
docker exec -it rmqbroker bash
发送一条测试消息:
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
消费消息:
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
七、常见问题
问题 | 原因 | 解决方案 |
---|---|---|
exec user process caused: exec format error | 镜像不支持 ARM | 使用官方 apache/rocketmq:5.3.0 及以上版本(支持 ARM64) |
Dashboard 页面打不开 | 未启动成功或端口冲突 | docker logs rmqdashboard 检查 8080 端口 |
Broker 启动失败 | 配置文件路径错误 | 确认挂载路径 ./conf/broker.conf 存在 |
日志过大 | 默认无限制 | 定期清理 ./logs 和 ./store |
八、停止与删除
停止服务:
docker compose down
清理数据:
docker compose down -v