У нас есть несколько хостов, которые рассылают сообщения через Exchange. Для этих нескольких хостов я создал экземпляр SimpleMessageListenerContainer, который привязывается к очереди и хосту. Я зарегистрировал прослушиватель для контейнера. При поиске сообщений я ищу сообщения определенного типа. Если я получу сообщение, я хотел бы остановить контейнер, но я не знаю, как это сделать в конце MessageListener, поскольку у меня нет экземпляра контейнера. Кто-нибудь может мне помочь? Извините, если я кого-то запутал. Я очень новичок в AMQP и пытаюсь понять его.
Как остановить экземпляры SimpleMessageListenerContainer?
Ответы (1)
Вставьте в контейнер аннотацию @Resource, а затем вызовите для него stop(), когда получите желаемое сообщение.
person
Brad
schedule
09.12.2014
Пожалуйста, будьте более конкретными. Это еще один вопрос, а не ответ
- person Artem Bilan; 09.12.2014
Каждый экземпляр контейнера связан с фабрикой соединений. Как узнать, какой экземпляр вводить?
- person user2066789; 09.12.2014
Если вы хотите остановить определенный хост, получивший конкретное сообщение, вам понадобится что-то в сообщении, чтобы определить, какой хост его получил. Насколько мне известно, невозможно отследить сообщение до контейнера, который его принял, используя обычный JMS или иным образом. Единственный вариант, который я могу придумать, — использовать АОП для перехвата сообщения, когда контейнер собирается его передать, и внедрить ссылку.
- person Brad; 10.12.2014