Получать несколько сообщений JMS в одной транзакции, используя MDP - PullRequest
1 голос
/ 21 марта 2012

Мне нужно обрабатывать сообщения в пакетном режиме, скажем, 10. После 10 транзакций (или некоторого тайм-аута) будет один коммит для всех 10 транзакций, и если возникли какие-либо исключения, все десять сообщений будут откатаныи доставлены.

Наше приложение работает на Weblogic 11g, и я знаю, что эта функциональность существует с использованием weblogic MDB (пакетные сообщения jms http://docs.oracle.com/cd/E13222_01/wls/docs90/bridge/tuning.html).

. Мы сильно полагаемся на Spring в нашем приложении и не хотели быиспользовать любые EJB по разным причинам. Есть ли способ добиться этого с помощью пружинных MDP? Или есть инструмент, который будет?

1 Ответ

0 голосов
/ 21 марта 2012

Это не большая вещь, чтобы реализовать себя.Я фактически сделал это вчера (хотя в c # это все еще было против JMS)

Так что, хотя я не могу предложить вам прямой ответ, я могу рассказать вам об опыте, который у меня был при выполнении того же требования

Одна ошибка, с которой я столкнулся, заключалась в том, что я запускал несколько потребителей в очереди (каждый из которых предоставлял пакетную обработку), а предварительная выборка в очереди означала, что мой JMS-брокер почти полностью обрабатывал доставку сообщений моим потребителям

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

...