【问题标题】:rabbitmq list queues on all vhostsrabbitmq 列出所有虚拟主机上的队列
【发布时间】:2017-10-03 15:21:01
【问题描述】:

我有带有几个虚拟主机的 rabbitmq,每个主机上的队列很少。 如何使用 rabbitmqctl 列出来自所有虚拟主机的所有队列? 我试过了:

rabbitmqctl list_queues -p /*
rabbitmqctl list_queues -p *
rabbitmqctl list_queues -p /
rabbitmqctl list_queues -p ./*

有什么想法吗?

【问题讨论】:

    标签: rabbitmq rabbitmqctl


    【解决方案1】:

    试试这个:

    #!/bin/bash
    IFS=$'\n'
    ordered_vhosts=$(./rabbitmqctl list_vhosts -q | xargs -n1 | sort -u)
    
    for V in $ordered_vhosts; do
        echo "*****Vhost $V Total queues " $(./rabbitmqctl list_queues -q -p $V | wc -l)
        for Q in $(./rabbitmqctl list_queues -q name messages -p $V | xargs -n2 | sort -u); do
            echo "Vhost $V queue-name total-messages $Q"
        done
    done
    

    【讨论】:

    • 经过一些修改,效果非常好!谢谢!
    • 我会建议一个稍作修改的选项,因为上面的代码不能按原样工作:``` #!/bin/bash IFS=$'\n' ordered_vhosts=$(rabbitmqctl list_vhosts -q | xargs -n1 | sort -u) 用于 $ordered_vhosts 中的 V; do echo "*****Vhost $V Total queues " $(rabbitmqctl list_queues -q -p $V | wc -l) for Q in $(rabbitmqctl list_queues -q name messages -p $V | xargs -n2 | sort -u); do echo "Vhost $V queue-name total-messages $Q" done done ```
    【解决方案2】:

    您可以使用for i in $(rabbitmqctl list_vhosts); do echo vhost: $i && rabbitmqctl list_queues -p $i; done 直接从命令行运行

    【讨论】:

      【解决方案3】:

      对我有用

      rabbitmqctl list_vhosts | xargs -n1  rabbitmqctl list_queues -p
      

      【讨论】:

        猜你喜欢
        • 2018-03-02
        • 2023-03-12
        • 2021-08-15
        • 2016-12-01
        • 2022-07-12
        • 1970-01-01
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多