可通过rabbitmq管理插件的web ui、http api或rabbitmqctl命令行工具查看队列消息数(ready/unacked)和消费者状态;web ui最直观,api适合监控集成,rabbitmqctl适用于本地快速检查,且消息数与消费者状态受消费确认、断连、ttl等实时影响。

可以通过 RabbitMQ 的管理插件提供的 HTTP API 或 Web UI 直接查看队列的消息数量和消费者状态,无需编写额外代码;命令行工具 rabbitmqctl 也能快速获取这些信息。
使用 Web UI 查看队列消息数与消费者状态
RabbitMQ 自带的管理界面是最直观的方式。启用管理插件后(默认未启用),访问 http://localhost:15672,登录后进入 Queues 标签页:
- 每行显示一个队列,Ready 列即为当前等待被消费的消息数(未被取走)
- Unacked 是已投递给消费者但尚未确认(ack)的消息数
- Total = Ready + Unacked(部分版本还显示 Messages 总计)
- Consumer 列显示当前连接的消费者数量,点击队列名称可看到详细消费者列表(含 IP、通道、标签、预取值等)
调用 HTTP API 获取实时数据
适合集成到监控或运维脚本中。基础 API 地址为 http://<host>:15672/api/queues</host>,支持按 vhost 和 queue 名过滤:
- 获取所有队列:
curl -u user:pass http://localhost:15672/api/queues - 获取指定队列详情:
curl -u user:pass "http://localhost:15672/api/queues/%2F/my_queue"(%2F是 URL 编码的 `/`,表示默认 vhost) - 返回 JSON 中关键字段:
messages_ready、messages_unacknowledged、consumers
使用 rabbitmqctl 命令行查看
适用于服务器本地快速检查,无需网络或浏览器:
- 列出所有队列及其消息数和消费者数:
rabbitmqctl list_queues name messages_ready messages_unacknowledged consumers - 只查某个队列:
rabbitmqctl list_queues name messages_ready messages_unacknowledged consumers | grep my_queue - 查看消费者详情(含连接信息):
rabbitmqctl list_consumers
注意几个常见细节
消息数量不是静态值,受发布、消费、确认、拒绝、TTL 等行为实时影响:
-
Ready 消息在消费者
basic.consume后、未basic.ack前会移入 Unacked - 若消费者断连且未设置
no_ack=true,Unacked 消息会重回 Ready 状态(前提是 channel 未关闭) - 队列设置了
x-max-length或消息设了 TTL,可能导致 Ready 数量“不增反减” - 消费者状态中的 prefetch_count 影响一次最多拉取多少条未确认消息,间接影响 Unacked 值











