【发布时间】:2014-06-25 07:13:58
【问题描述】:
有没有办法通过简单的 Curl 获取 rabbitmq 中队列的大小(剩余消息)?
类似curl -xget http://host:1234/api/queue/test/stats
谢谢
【问题讨论】:
有没有办法通过简单的 Curl 获取 rabbitmq 中队列的大小(剩余消息)?
类似curl -xget http://host:1234/api/queue/test/stats
谢谢
【问题讨论】:
最后我做到了以下几点:
curl -s -i -u guest:guest http://host:port/api/queues/vhost/queue_name | sed 's/,/\n/g' | grep '"messages"' | sed 's/"messages"://g'
【讨论】:
sed | grep | sed 的东西都应该被重构。我会选择curl ... | sed -n 's/.*"messages:" *\([^ ]*\).*/\1/p',但选择 YMMV。如果输出是正确的 JSON,... | jq -r .messages 更简单且更具可读性。 (不在我可以测试的地方。)
curl -i 选项似乎也没什么用。我被 vhost 参数百分比编码的要求绊倒了; curl -s -u guest:guest http://localhost:55672/api/queues/%2F/queuename | grep -o '"messages":[0-9]*' 为我工作。
尽管我很喜欢 hacky sed one-liners,但这可能是最干净的解决方案:
curl -s -u <user>:<password> http://<host>:<port>/api/queues/<virtual-host>/<queue> | jq .messages
【讨论】:
使用来自 Management Plugin 的 HTTP API。
看起来您可能会从/api/queues/(vhost)/(name) 中受益。输出是纯 json 格式,因此您不会错过 messages 字段(及相关字段)。
我很欣赏这是一篇旧帖子,并且该问题特别指出使用“curl”,但认为添加“rabbitmqctl list_queues”命令提供每个队列的消息计数可能很有用
【讨论】:
curl -u login:password http://localhost:15672/api/queues | sed 's/,/\n/g' | grep '"messages"\:'
基于HTTP api的Rabbitmq v3.3.4 PHP库。
【讨论】: