🚀 RocketMQ 核心命令详解:mqnamesrv、mqbroker、mqadmin
在 Apache RocketMQ 中,mqnamesrv、mqbroker 和 mqadmin 是三个最核心的命令行工具,分别用于:
- 启动 NameServer(路由中心)
- 启动 Broker(消息存储与转发)
- 执行 运维管理操作
掌握这三个命令的使用方式、参数配置和常见场景,是部署、运维和排查 RocketMQ 集群的基础。
一、mqnamesrv:启动 NameServer
✅ 功能:
启动 RocketMQ 的 命名服务器(NameServer),负责管理集群的路由信息(Topic → Broker 映射),不参与消息收发。
🔧 基本语法:
sh mqnamesrv [-c config_file] [-p] [-h]
📌 参数说明:
| 参数 | 说明 |
|---|---|
-c config_file | 指定自定义配置文件路径(如 namesrv.conf) |
-p | 打印当前配置并退出,不启动服务(调试用) |
-h | 显示帮助信息 |
📦 使用示例
1. 使用默认配置启动
sh mqnamesrv
- 默认监听端口:
9876 - 适用于测试环境
2. 使用自定义配置文件启动
sh mqnamesrv -c /opt/rocketmq/conf/namesrv.conf
3. 查看当前配置(不启动)
sh mqnamesrv -p
输出示例:
listenPort=9876
serverWorkerThreads=8
remotingAsyncSemaphoreValue=256
aclEnable=false
🛠️ namesrv.conf 常见配置项
# 监听端口
listenPort=9876
# 工作线程数
serverWorkerThreads=8
# 是否启用 ACL 权限控制
aclEnable=false
# 日志根目录(需配合 logback 配置)
rocketmqHome=/opt/rocketmq
✅ 建议:生产环境部署 2~3 个 NameServer 节点,提高可用性。
二、mqbroker:启动 Broker
✅ 功能:
启动 RocketMQ 的 代理服务器(Broker),负责消息的接收、存储、转发、主从同步等核心功能。
🔧 基本语法:
sh mqbroker [-n namesrvAddr] [-c config_file] [-p] [-h] [-g] [-f]
📌 参数说明:
| 参数 | 说明 |
|---|---|
-n namesrvAddr | 指定 NameServer 地址列表,格式:ip1:port;ip2:port |
-c config_file | 指定 Broker 配置文件(如 broker.conf) |
-p | 打印当前配置并退出 |
-h | 显示帮助信息 |
-g | 启动多个 Broker 实例(Group 模式) |
-f | 强制启动,忽略某些检查(慎用) |
📦 使用示例
1. 指定 NameServer 地址启动
sh mqbroker -n 192.168.0.1:9876
2. 使用配置文件启动(推荐)
sh mqbroker -n 192.168.0.1:9876;192.168.0.2:9876 -c /opt/rocketmq/conf/broker.conf
3. 查看当前配置
sh mqbroker -p
🛠️ broker.conf 关键配置项
# Broker 所属集群
brokerClusterName=DefaultCluster
# Broker 名称(主从同名)
brokerName=broker-a
# Broker ID:0=Master,>0=Slave
brokerId=0
# NameServer 地址
namesrvAddr=192.168.0.1:9876;192.168.0.2:9876
# 角色:ASYNC_MASTER, SYNC_MASTER, SLAVE
brokerRole=ASYNC_MASTER
# 刷盘方式:ASYNC_FLUSH(异步)或 SYNC_FLUSH(同步)
flushDiskType=ASYNC_FLUSH
# 存储路径
storePathRootDir=/store
storePathCommitLog=/store/commitlog
storePathConsumeQueue=/store/consumequeue
storePathIndex=/store/index
# 自动创建 Topic(生产建议关闭)
autoCreateTopicEnable=false
# 默认 Queue 数量
defaultTopicQueueNums=8
# 消息保留时间(小时)
fileReservedTime=72
# 最大消息大小(4MB)
maxMessageSize=4194304
# 开启 ACL
aclEnable=false
🔄 主从配置示例
Master 配置(broker-master.conf)
brokerName=broker-a
brokerId=0
brokerRole=ASYNC_MASTER
Slave 配置(broker-slave.conf)
brokerName=broker-a
brokerId=1
brokerRole=SLAVE
启动 Slave:
sh mqbroker -n 192.168.0.1:9876 -c broker-slave.conf
三、mqadmin:运维管理命令
✅ 功能:
RocketMQ 提供的运维管理工具,用于执行 Topic 管理、消费者状态查看、消息查询等操作。
🔧 基本语法:
sh mqadmin [command] [options]
📌 常用命令列表
| 命令 | 说明 | 示例 |
|---|---|---|
topicList | 查看所有 Topic | sh mqadmin topicList -n 192.168.0.1:9876 |
brokerStatus | 查看 Broker 状态 | sh mqadmin brokerStatus -n 192.168.0.1:9876 -b 192.168.0.2:10911 |
updateTopic | 创建或更新 Topic | sh mqadmin updateTopic -n 192.168.0.1:9876 -c DefaultCluster -t ORDER_TOPIC -r 8 |
deleteTopic | 删除 Topic | sh mqadmin deleteTopic -n 192.168.0.1:9876 -c DefaultCluster -t ORDER_TOPIC |
consumerProgress | 查看消费者组消费进度 | sh mqadmin consumerProgress -n 192.168.0.1:9876 -g my_consumer_group |
queryMsgByKey | 根据 Key 查询消息 | sh mqadmin queryMsgByKey -n 192.168.0.1:9876 -t ORDER_TOPIC -k ORDER_12345 |
queryMsgByOffset | 根据 Offset 查询消息 | sh mqadmin queryMsgByOffset -n 192.168.0.1:9876 -t ORDER_TOPIC -b 192.168.0.2:10911 -i 0 -o 100 |
clusterList | 查看集群列表 | sh mqadmin clusterList -n 192.168.0.1:9876 |
topicRoute | 查看 Topic 路由信息 | sh mqadmin topicRoute -n 192.168.0.1:9876 -t ORDER_TOPIC |
printMsg | 打印消息内容 | sh mqadmin printMsg -n 192.168.0.1:9876 -t ORDER_TOPIC -u true |
📦 常用运维场景示例
1. 创建 Topic
sh mqadmin updateTopic \
-n 192.168.0.1:9876 \
-c DefaultCluster \
-t ORDER_TOPIC \
-r 8 \
-w 8
-r: Read Queue 数-w: Write Queue 数
2. 查看消费延迟
sh mqadmin consumerProgress -n 192.168.0.1:9876 -g order_processor
输出包含:
Diff Total:未消费消息总数(积压量)Last Time:最后消费时间
3. 根据订单号查询消息
sh mqadmin queryMsgByKey -n 192.168.0.1:9876 -t ORDER_TOPIC -k ORDER_20240501001
四、典型启动流程(生产环境)
1. 启动 NameServer(所有节点)
nohup sh mqnamesrv > ~/logs/rocketmqlogs/namesrv.log 2>&1 &
2. 启动 Master Broker
nohup sh mqbroker \
-n 192.168.0.1:9876;192.168.0.2:9876 \
-c /opt/rocketmq/conf/broker-master.conf \
> ~/logs/rocketmqlogs/broker.log 2>&1 &
3. 启动 Slave Broker
nohup sh mqbroker \
-n 192.168.0.1:9876;192.168.0.2:9876 \
-c /opt/rocketmq/conf/broker-slave.conf \
> ~/logs/rocketmqlogs/broker.log 2>&1 &
✅ 建议使用
nohup、systemd或容器化(Docker/K8s)方式守护进程。
五、常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
mqnamesrv 启动失败 | 端口被占用 | lsof -i:9876 或换端口 |
mqbroker 无法注册 | 网络不通、NameServer 地址错误 | 检查 namesrvAddr 配置 |
NO_TOPIC_ROUTEINFO | Topic 未创建或未同步 | 手动创建 Topic 或等待注册 |
| 消费者无法消费 | 消费组名错误、未订阅 | 检查 consumerGroup 和 subscribe |
| 消息积压严重 | 消费者处理慢、数量不足 | 扩容消费者或优化业务逻辑 |
| 磁盘写满 | 消息保留时间过长 | 调整 fileReservedTime 或清理磁盘 |
✅ 总结:三大命令核心对比
| 命令 | 作用 | 是否必须 | 使用频率 |
|---|---|---|---|
mqnamesrv | 启动 NameServer | ✅ 必须 | 一次性 |
mqbroker | 启动 Broker | ✅ 必须 | 高频 |
mqadmin | 运维管理 | ✅ 必须 | 持续使用 |
🚀 一句话总结:
mqnamesrv是“导航地图”的启动器,mqbroker是“消息仓库”的启动器,mqadmin是“运维指挥台”。
掌握这三个命令,你就拥有了对 RocketMQ 集群的“启动权”、“控制权”和“观察权”。
建议将常用命令和配置脚本化,结合监控系统(如 Prometheus + Grafana),实现自动化运维。
2858

被折叠的 条评论
为什么被折叠?



