Вопрос

Я хочу удалить привязки в RabbitMQ, не удаляя связанную очередь.Я использую txAMQP со спецификацией 0.8 AMQP;кажется, это единственная версия, которую поддерживает RabbitMQ, но у нее нет unbind способ.

Как ни странно, ознакомление с исходным кодом наводит на мысль, что RabbitMQ поддерживает unbind, что приводит меня в некоторое замешательство.

Могу ли я отменить привязку с помощью этой комбинации клиента и сервера?Если да, то каким образом?

Это было полезно?

Решение

Как вы заметили, RabbitMQ для нескольких версий теперь поддерживает очередь расширений.Метод Unbind с удалением определения из спецификации 0-9, но не все клиентские библиотеки AMQP были расширены таким же образом.

Чтобы заставить это работать с txAMQP, вам нужно будет взять XML-определения очереди.Отвязать и поставить в очередь.Отмените привязку методов из спецификации 0-9, вставьте их в файл спецификации 0-8, используемый txAMQP, и перезапустите приложение.Теперь у него должна быть очередь.Доступен метод Unbind, если я правильно понял, как работает txAMQP.

Вот соответствующие XML-строки из лицензированной BSD спецификации 0-9-1:

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top