【问题标题】:Curl to get Rabbitmq queue sizecurl 获取 Rabbitmq 队列大小
【发布时间】:2014-06-25 07:13:58
【问题描述】:

有没有办法通过简单的 Curl 获取 rabbitmq 中队列的大小(剩余消息)?

类似curl -xget http://host:1234/api/queue/test/stats

谢谢

【问题讨论】:

    标签: curl rabbitmq


    【解决方案1】:

    最后我做到了以下几点:

    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]*' 为我工作。
    【解决方案2】:

    尽管我很喜欢 hacky sed one-liners,但这可能是最干净的解决方案:

    curl -s -u <user>:<password> http://<host>:<port>/api/queues/<virtual-host>/<queue> | jq .messages
    

    【讨论】:

    • 如果您碰巧使用默认的虚拟主机“/”,请使用“/”的编码版本,即“%2F”。
    【解决方案3】:

    使用来自 Management Plugin 的 HTTP API。

    看起来您可能会从/api/queues/(vhost)/(name) 中受益。输出是纯 json 格式,因此您不会错过 messages 字段(及相关字段)。

    【解决方案4】:

    我很欣赏这是一篇旧帖子,并且该问题特别指出使用“curl”,但认为添加“rabbitmqctl list_queues”命令提供每个队列的消息计数可能很有用

    【讨论】:

      【解决方案5】:

      curl -u login:password http://localhost:15672/api/queues | sed 's/,/\n/g' | grep '"messages"\:'

      基于HTTP api的Rabbitmq v3.3.4 PHP库。

      REQRequest

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-08
        • 1970-01-01
        • 2017-09-16
        • 1970-01-01
        • 2010-11-05
        • 2019-05-28
        • 2017-12-27
        • 1970-01-01
        相关资源
        最近更新 更多