我有一些代码使用
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 的匹配绑定密钥?
但是如果我稍后将 ROUTING_KEYS 更改为 ["b","c","d"] 它将正确添加“d”,但不会删除“a”。
您必须使用
queue_unbind
方法来删除 a
绑定。
有没有办法获取“my_exchange”当前注册的routing_keys,以便我可以计算差异并自动删除不再属于ROUTING_KEYS的那些?
您可以使用 HTTP API 获取队列的绑定列表:
/api/queues/vhost/name/bindings