rabbitmq 安装延迟队列插件后查看 exchange 中有多少延迟未发送的消息

- 服务器应用

业务上基于 rabbitmq 的延迟队列插件实现延迟队列功能,由于延迟未发送的消息是存储在 exchange 中,只有消息到期后才会被路由到对应的队列中。所以要关注下 exchange 中延迟未发送的消息数量,以免堆积太多造成影响。

有两种方式可以查看 exchange 中未发送的消息数量,一个是通过 rabbitmq web ui 查看,一个是调用 rabbitmq api 查看,接下来我分别介绍下查看方法。

通过 web ui 查看

直接登录到 rabbitmq web ui 后台,然后切换到 [Exchanges] 页面,点击进入到对应的 exchange 中,查看 后面的值即可。如果存在延迟消息则显示对应的数量,如果不存在则显示为 0 。
2024-04-02T14:03:19.png
需要注意的时,如果非延迟队列交换机,是不会显示 这个字段的。



通过 api 查看

通过如下请求即可获取 rabbitmq 中所有 vhost 下所有延迟队列 exchange 中延迟消息的数量。注意账号密码要改成自己对应 rabbitmq 的账号密码。

curl -s -u username:password -X GET http://192.168.1.66:15672/api/exchanges | jq -c '.[] | select(.type == "x-delayed-message") | {vhost, name, "messages_delayed"}'
{"vhost":"test","name":"zcy.delay","messages_delayed":2024}