如何按队列名称清除 python 中的所有 rabbitmq 队列

How to purge all rabbitmq queues in python by queue name

我使用 python kombu 包与 rabbitmq 服务交互。 我想清除所有队列。我看到有一个 kombu.Queue.purge 方法,但我不想创建 kombu.Queue 对象,因为我不知道哪些交换器连接到哪些队列。我只想使用队列名称。

有一个 kombu Channel class 实现了一个 queue_purge 方法,该方法根据其名称清除队列。

以下代码列出所有队列并根据其名称清除它们。

from kombu import Connection

# Create a connection
mq_conn_string = 'amqp://user:password@domain:port//'  # Set the correct credentials
mq_conn = Connection(mq_conn_string)
mq_conn.connect()

# Create a channel
channel = mq_conn.channel()

# Get all queues
vhost = "/"
manager = mq_conn.get_manager()
queues = manager.get_queues(vhost)

# Purge each queue
for queue in queues:
    queue_name = queue["name"]
    channel.queue_purge(queue_name)