У нас есть эта настройка, где мы вызываем веб-сервис для создания очереди и получаем имя очереди из ответа.Spring amqp: обнаружение выключения и повторное подключение к другой очереди
Затем мы установили SimpleMessageListenerContainer и установили там имя очереди, а затем запустили его.
Однако время от времени очередь удаляется - в результате получается «404 не может объявить очередь XXXXXXXXX». В этих случаях мне нужно снова вызвать веб-сервис и добавить новое QueueName в SimpleMessageListenerContainer, а затем удалить старый.
Единственный способ, которым я вычислил, запускать любой код для обработки, это создать пользовательский CachedConnectionFactory и переопределить метод shutdownCompleted.
Однако shutdownCompleted, похоже, срабатывает, когда SimpleMessageListenerContainer также переключается, поэтому он вставляется в цикл. Исключение ShutdownSignalException, отправленное в shutdownCompleted, похоже, не выглядит каким-либо другим, если триггер является внешним от сервера или от клиента, обрабатывающего новую очередь, поэтому я не могу понять, как пропустить обработку на «втором» ходу.
Итак, каков обычный способ обнаружения и запуска пользовательской обработки, когда сервер убивает очередь?