代码之家  ›  专栏  ›  技术社区  ›  Marcelo Cantos

txamqp能否在rabbitmq中解除绑定?

  •  0
  • Marcelo Cantos  · 技术社区  · 16 年前

    我希望在不删除绑定队列的情况下删除rabbitmq中的绑定。我正在将txamqp与0.8amqp规范一起使用;它似乎是rabbitmq支持的唯一版本,但它没有 unbind 方法。

    奇怪的是,对源代码的仔细研究表明rabbitmq支持unbind,这让我相当困惑。

    我可以用客户机和服务器的组合解除绑定吗?如果是这样,怎么办?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Tony Garnock-Jones    16 年前

    正如您所注意到的,rabbitmq对于一些版本现在支持扩展队列.unbind方法,其定义从0-9规范中提取,但并非所有AMQP客户机库都以相同的方式扩展。

    要使其与txamqp一起工作,需要从0-9规范中获取queue.unbind和queue.unbindok方法的XML定义,将它们粘贴到txamqp使用的0-8规范文件中,然后重新启动应用程序。它现在应该有一个queue.unbind方法,如果我正确理解了txamqp的工作原理的话。

    以下是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>