DirectMessageListenerContainer: как обработать удаление очереди в RabbitMQ? - PullRequest
0 голосов
/ 18 марта 2019

Я использую DirectMessageListenerContainer для использования данных из RabbitMQ.Вот мой сценарий:

У меня есть два модуля, которые взаимодействуют с RabbitMQ.Первый модуль создает и удаляет очередь, тогда как второй модуль имеет DirectMessageListenerContainer, который слушает очереди в RabbitMQ.

Всякий раз, когда в RabbitMQ удаляется какая-либо очередь, DirectMessageListenerContainer начинает непрерывно генерировать исключение и пытается подключиться к уже удаленной очереди.

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

1 Ответ

1 голос
/ 18 марта 2019

Когда вы удаляете очереди в одном модуле, вы можете запланировать отписку от этих очередей в контейнере. Смотрите его метод:

/**
 * Remove queue(s) from this container's list of queues.
 * @param queueNames The queue(s) to remove.
 * @return the boolean result of removal on the target {@code queueNames} List.
 */
public boolean removeQueueNames(String... queueNames) {

Вы также можете просто подписаться на приложение ListenerContainerConsumerFailedEvent даже через @EventiListener во втором модуле, чтобы выполнить то же самое removeQueueNames. Я думаю, Throwable из этого ListenerContainerConsumerFailedEvent должно иметь некоторую информацию о том, какую очередь в данный момент использовать плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...