pika 有没有办法获取特定 RabbitMQ 交换的所有路由密钥列表?

问题描述 投票:0回答:1

我有一些代码使用

pika
将routing_keys绑定到RabbitMQ交换:

ROUTING_KEYS = ["a", "b", "c"]

parameters = pika.ConnectionParameter(host=whatever, port=whatever, ...)
with pika.BlockingConnection(parameters=parameters) as connection:
  channel = connection.channel()
  channel.exchange_declare("my_exchange")
  channel.queue_declare("my_queue")
  for key in ROUTING_KEYS:
    channel.queue_bind(queue="my_queue", exchange="my_exchange", routing_key=key)

这有效。但如果我稍后将

ROUTING_KEYS
更改为
["b","c","d"]
,它将正确添加“d”,但不会不会删除“a”。

有没有办法获取“my_exchange”当前注册的routing_keys,以便我可以计算差异并自动删除不再属于

ROUTING_KEYS
的部分?

感谢您的任何建议。


编辑

或者,在 message_callback 中是否有任何方法可以找出来自 RabbitMQ 的匹配绑定密钥?

pika
1个回答
1
投票

但是如果我稍后将 ROUTING_KEYS 更改为 ["b","c","d"] 它将正确添加“d”,但不会删除“a”。

您必须使用

queue_unbind
方法来删除
a
绑定。

有没有办法获取“my_exchange”当前注册的routing_keys,以便我可以计算差异并自动删除不再属于ROUTING_KEYS的那些?

您可以使用 HTTP API 获取队列的绑定列表:

/api/queues/vhost/name/bindings
© www.soinside.com 2019 - 2024. All rights reserved.