如何使用Python代码以编程方式列出在RabbitMQ代理上创建的当前队列以及连接到它们的工作者数量?这相当于:
rabbitmqctl list_queues name consumers
答案 0 :(得分:2)
我是这样做的,并在网页上显示所有队列及其详细信息(消息准备好,未确认等) -
import kombu
conn = kombu.Connection(broker_url)# example 'amqp://guest:guest@localhost:5672/'
conn.connect()
client = conn.get_manager()
queues = client.get_queues('/')#assuming vhost as '/'
您需要安装kombu,队列将是一个字典,其中的键代表队列名称。 我想在挖掘芹菜花的代码(用于监测芹菜的工具)时得到了这个。
更新:正如@ zaq178miami指出的那样,您还需要具有http API的管理插件。我忘了我已经启用了比在rabbitmq。
答案 1 :(得分:1)
这种方式对我有用:
def get_queue_info(queue_name):
with celery.broker_connection() as conn:
with conn.channel() as channel:
return channel.queue_declare(queue_name, passive=True)
这将返回一个namedtuple,其中包含名称,等待的消息数和该队列的使用者。
ksrini答案也是正确的,可以在需要有关队列的更多信息时使用。
感谢Ask Solem给了我一些提示。
答案 2 :(得分:0)
作为rabbitmq客户端,您可以使用pika。但是它没有list_queues的选项。最简单的解决方案是使用subprocess
:
import subprocess
command = "/usr/local/sbin/rabbitmqctl list_queues name consumers"
process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
print process.communicate()