我想删除 RabbitMQ 中的绑定而不删除绑定队列。我正在使用带有 0.8 AMQP 规范的 txAMQP;它似乎是 RabbitMQ 支持的唯一版本,但它没有unbind
方法。
奇怪的是,仔细阅读源代码表明 RabbitMQ 支持取消绑定,这让我很困惑。
我可以取消绑定客户端和服务器的这种组合吗?如果是这样,怎么做?
我想删除 RabbitMQ 中的绑定而不删除绑定队列。我正在使用带有 0.8 AMQP 规范的 txAMQP;它似乎是 RabbitMQ 支持的唯一版本,但它没有unbind
方法。
奇怪的是,仔细阅读源代码表明 RabbitMQ 支持取消绑定,这让我很困惑。
我可以取消绑定客户端和服务器的这种组合吗?如果是这样,怎么做?
正如您所注意到的,RabbitMQ 现在有几个版本支持扩展 Queue.Unbind 方法,其定义从 0-9 规范提升,但并非所有 AMQP 客户端库都以相同的方式扩展。
要让它与 txAMQP 一起工作,您需要从 0-9 规范中获取 Queue.Unbind 和 Queue.UnbindOk 方法的 XML 定义,将它们粘贴到 txAMQP 使用的 0-8 规范文件中,然后重新启动您的应用程序。如果我正确理解了 txAMQP 的工作原理,它现在应该有一个可用的 Queue.Unbind 方法。
以下是来自 BSD 许可的 0-9-1 规范的相关 XML 节:
<method name="unbind" synchronous="1" index="50">
<chassis name="server" implement="MUST"/>
<response name="unbind-ok"/>
<field name="reserved-1" type="short" reserved="1"/>
<field name="queue" domain="queue-name"/>
<field name="exchange" domain="exchange-name"/>
<field name="routing-key" domain="shortstr"/>
<field name="arguments" domain="table"/>
</method>
<method name="unbind-ok" synchronous="1" index="51">
<chassis name="client" implement="MUST"/>
</method>