消息队列常用命令速查表 - Kafka/RabbitMQ/RocketMQ 命令大全
消息队列的事故很少是「挂了」,更多是「不消费」「积压」「连接数只涨不降」这类慢性病。定位顺序有固定套路:先看 lag 或队列深度判断积压,再看消费者数量与状态区分「没人消费」和「消费太慢」,然后用连接列表确认是应用侧连接池没回收还是 Broker 侧异常。Kafka、RabbitMQ、RocketMQ、Redis Pub/Sub 四套命令各有各的观察口径,不能混用结论——例如 Redis Pub/Sub 在客户端断开期间的消息直接丢,没有 lag 可看,排查思路要换成确认消费者是否在线。表里按积压、连接、集群巡检、压测四类场景分组,并给出 kafka-producer-perf-test 这类压测命令的限速与条数参数。遇到积压先判断成因,别用清队列掩盖问题。
Kafka 6
kafka-consumer-groups.sh --bootstrap-server :9092 --list列出所有消费组
kafka-consumer-groups.sh --describe --group <group>查看消费组 lag 和分区进度
kafka-topics.sh --describe --topic <topic>查看 topic 分区、副本和 leader 分布
kafka-topics.sh --create --topic <t> --partitions 3 --replication-factor 2创建 topic 指定分区和副本数
kafka-console-producer.sh --topic <t> --bootstrap-server :9092命令行生产消息(调试用)
kafka-console-consumer.sh --topic <t> --from-beginning --group <g>从头消费消息并加入消费组
RabbitMQ 6
rabbitmqctl list_queues name messages consumers查看队列积压和消费者数
rabbitmqctl list_connections name state channels查看连接和 channel 数,排查泄漏
rabbitmqctl list_channels pid number按 channel 维度定位哪个连接占用多
rabbitmqctl cluster_status查看集群节点和分区状态
rabbitmqadmin get queue=<q> count=1 ack=false偷看队首消息但不确认,调试用
rabbitmqctl list_exchanges name type / list_bindings查看交换器和绑定关系
RocketMQ 5
mqadmin consumerProgress -g <group>查看消费组各队列积压进度
mqadmin topicList -m查看 topic 路由和队列分布
mqadmin clusterList查看 Broker 集群状态和角色
mqadmin brokerConsumeStats -b <addr> -g <group>按 Broker 看消费统计
mqadmin queryMsgById -i <msgId>按消息 ID 查询消息内容,排查丢失
Redis Pub/Sub 5
PUBLISH channel "message"向指定频道发布消息
SUBSCRIBE channel1 channel2订阅一个或多个频道
PSUBSCRIBE news.*按模式订阅匹配的频道
PUBSUB CHANNELS *查看当前活跃的频道列表
PUBSUB NUMSUB channel查看频道的订阅者数量
通用积压与连接排查 5
kafka-consumer-groups.sh --describe --group <g> --state看消费组是否在 rebalance
rabbitmqctl node_health_check快速检查节点健康(旧版命令)
ss -tnp | grep :9092 | wc -l统计到 Broker 的连接数,排查连接泄漏
du -sh /var/lib/kafka /var/lib/rabbitmq查看 MQ 数据盘占用,水位线告警必看
journalctl -u kafka --since "10 min ago"看 Broker 最近日志,排查 OOM 或限流
性能测试与压测 5
kafka-consumer-perf-test.sh --bootstrap-server :9092 --topic <t> --messages 1000压测消费吞吐
kafka-producer-perf-test.sh --topic <t> --num-records 100000 --throughput -1压测生产吞吐和延迟
rabbitmq-perf-test --queue <q> --rate 1000 --producers 5RabbitMQ 官方压测工具
redis-benchmark -h host -t publish,subscribe -n 100000Redis Pub/Sub 性能基准测试
kafka-consumer-groups.sh --describe --group <g> --members --verbose查看消费组成员和分配详情
提示
- 消息积压先看 lag 和消费者数,确认是消费慢还是消费者不够,而不是直接清队列。
- 排查连接泄漏时同时看 list_connections 和应用侧连接池配置,单看一边容易误判。
- 重启 Broker 前确认消息是否持久化,未落盘的消息会直接丢失。
- Kafka 压测用 --throughput -1 表示不限速,配合 --num-records 测极限吞吐。
- Redis Pub/Sub 消息不持久化,客户端断开期间的消息会丢失,需要可靠投递用 Stream。
- RabbitMQ 队列积压时先看 consumers 列,为 0 说明消费者未注册或已断开。
- kafka-consumer-groups --describe --group G 的 LAG 列若持续增长而非回落,说明消费速率低于生产速率,不是瞬时抖动。
- rabbitmqctl list_queues name messages_ready messages_unacknowledged consumers 可一次区分「无人消费」与「消费慢」。
- Redis Stream 的 XPENDING 配合 XINFO GROUPA 输出能定位卡住的消费者 ID,再决定是否 XCLAIM 转交。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。