Есть ли способ явно привязать очередь к обмену по умолчанию в RabbitMQ? - PullRequest
0 голосов
/ 27 мая 2020

Я ошибся: теперь обе очереди явно привязаны к некоторому обмену, который я могу редактировать для каждой очереди. Одна из этих очередей должна быть привязана к обмену по умолчанию. Теперь, когда я пытаюсь изменить обмен этой очереди на пустую строку, выдается исключение:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - operation not permitted on the default exchange, class-id=<..>, method-id=<..>)

Могу ли я передать некоторые определенные c значения методу com.rabbitmq.client .Channel # queueBind для привязки очереди к defaultChange? Я использую Java клиентскую библиотеку RabbitMQ 5.6.0

1 Ответ

0 голосов
/ 02 июня 2020

Во-первых, нам нужно понять, что такое обмен по умолчанию;

Из RabbitMQ Docs

Обмен по умолчанию - это прямой обмен без имени ( пустая строка), заранее объявленная брокером. У него есть одно специальное свойство, которое делает его очень полезным для простых приложений: каждая создаваемая очередь автоматически привязывается к ней с ключом маршрутизации, который совпадает с именем очереди.

Итак, в основном, в Другими словами, если вы создаете очередь без явной привязки обмена, в очереди будет автоматически c привязка, созданная с обменом по умолчанию.

В вашем вопросе из вашего описания похоже, что у вас есть два очереди (скажем, A и B), и вы случайно связали обе очереди с обменом (скажем, test.exchange). Вместо того, чтобы вносить изменения в «default.exchange», вам следует удалить привязку очереди A или B к вашему обмену test.exchange .

Пожалуйста, проверьте api, связанный с «/ api / bindings», в rabbitMQ Api Guides , или вы можете просто войти в консоль управления кроликом и удалить привязку.

...