Многопоточный JMS, получающий весной - PullRequest
5 голосов
/ 29 октября 2010

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

Я пробовал использовать классы DefaultMessageListenerContainer и SimpleMessageListenerContainer.

Проблема, с которой я столкнулся, заключается в том, что создается впечатление, что создается единственный экземпляр класса MessageListener, независимо от того, как я его настраиваю. Это вынуждает меня без необходимости писать реализации MessageListener без сохранения состояния или потока, так как у меня ListenerContainer, настроенный для использования нескольких потоков (concurrentConsumers = 8).

Есть ли очевидное решение, которое я пропускаю?

Ответы [ 3 ]

5 голосов
/ 29 октября 2010

Это по замыслу.MessageListener - это зависимость, которую вы вставляете в Spring - у нее нет возможности создавать новые.

Это вынуждает меня без необходимости писать реализации без учета состояния или потокобезопасные реализации MessageListener

Ты говоришь, что это плохо.Создание вашей MessageListener - очень хорошая идея, Spring просто устраняет искушение поступить иначе.

3 голосов
/ 25 сентября 2012

Возможно, этот ответ слишком поздний, но он может принести пользу другим, кто его ищет. Короче говоря, ответ использует CommonsPoolTargetSource и ProxyFactoryBean.

Проверьте эту ссылку для деталей: http://forum.springsource.org/showthread.php?34595-MDB-vs-MDP-concurrency

Если вы хотите сделать что-то подобное для темы , отметьте это: https://stackoverflow.com/a/12668538/266103

1 голос
/ 20 января 2014

Конфигурирование concurrentConsumers достаточно для одновременной обработки сообщений.Это не означает, что у вас будет «n» экземпляров MessageListenerContainer.MessageListenerContainer может охватывать «задачи» для обработки сообщений.При желании вам может потребоваться соответствующим образом настроить ведение журнала, чтобы просмотреть информацию, связанную с базовыми задачами / потоками.

См. " Настройка потребления сообщений JMS в Spring " для получения дополнительной информации.

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