2013-09-06 4 views
0

Я использую Spring JMS с ActiveMQ в качестве брокера и запускаю приложение на Tomcat. Я видел много примеров приема сообщений синхронно с указанным селектором сообщений, используя метод receiveSelected (..). Но я не могу найти способ динамически указывать селектор сообщений в jms: listener-container для получения сообщения асинхронно. Селектор будет известен только во время выполнения.Spring JMS с ActiveMQ: как асинхронно читать выборочные сообщения

Единственный способ, которым я могу думать, это использовать вместо этого DefaultMessageListenerContainer и создавать новый экземпляр каждый раз, когда мне нужен новый селектор. Но я не уверен, что это правильный подход и лучшие практики в этом. Например, следует ли кэшировать listenerContainer, связанный с селектором? Когда это должно быть выключение и т. Д.?

Я был бы очень признателен, если бы кто-нибудь мог указать мне пример или набросать стратегию для решения этой ситуации.

Заранее благодарен!

ответ

1

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

+0

Мне нужны одновременные потребители, каждый из которых потребляет сообщения от разных селекторов. Например, мой селектор - это идентификатор учетной записи, и каждый потребитель несет ответственность за обработку сообщений для этой учетной записи. Если я использую один контейнер, сообщения для других учетных записей селекторов будут потеряны правильно? – user2755442

+0

Это, вероятно, не будет хорошо масштабироваться - особенно с большим количеством учетных записей - если вам нужно обрабатывать запросы для разных учетных записей по-разному, вы можете рассмотреть возможность использования Spring Integration и использовать маршрутизатор на основе (независимо) критериев. Если вам действительно нужен контейнер для каждой учетной записи (что я сомневаюсь), вам придется запускать новый контейнер для каждого. –

+0

Спасибо, Гэри! Я кратко посмотрел на маршрутизацию SI, и это выглядит многообещающим для моего использования. Я сделаю это. – user2755442

Смежные вопросы