Может ли txAMQP отменить привязку в RabbitMQ?
-
20-09-2019 - |
Вопрос
Я хочу удалить привязки в 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>