Как остановить экземпляры SimpleMessageListenerContainer?

У нас есть несколько хостов, которые рассылают сообщения через Exchange. Для этих нескольких хостов я создал экземпляр SimpleMessageListenerContainer, который привязывается к очереди и хосту. Я зарегистрировал прослушиватель для контейнера. При поиске сообщений я ищу сообщения определенного типа. Если я получу сообщение, я хотел бы остановить контейнер, но я не знаю, как это сделать в конце MessageListener, поскольку у меня нет экземпляра контейнера. Кто-нибудь может мне помочь? Извините, если я кого-то запутал. Я очень новичок в AMQP и пытаюсь понять его.


person user2066789    schedule 09.12.2014    source источник


Ответы (1)


Вставьте в контейнер аннотацию @Resource, а затем вызовите для него stop(), когда получите желаемое сообщение.

person Brad    schedule 09.12.2014
comment
Пожалуйста, будьте более конкретными. Это еще один вопрос, а не ответ - person Artem Bilan; 09.12.2014
comment
Каждый экземпляр контейнера связан с фабрикой соединений. Как узнать, какой экземпляр вводить? - person user2066789; 09.12.2014
comment
Если вы хотите остановить определенный хост, получивший конкретное сообщение, вам понадобится что-то в сообщении, чтобы определить, какой хост его получил. Насколько мне известно, невозможно отследить сообщение до контейнера, который его принял, используя обычный JMS или иным образом. Единственный вариант, который я могу придумать, — использовать АОП для перехвата сообщения, когда контейнер собирается его передать, и внедрить ссылку. - person Brad; 10.12.2014