Hello fellow developers,

I find myself in the midst of the age-old dilemma of needing to provide
scalable code where our load tests currently indicate that the code is
otherwise.  I am coding a message-driven POJO.  Originally I implemented the
queue using the Spring DefaultMessageListenerContainer and discovered that
this is invoked upon every message received (hence, "listener").  Because
our load tests are bombarding our server, the performance benchmarks were
not great. 

I figured that if I write my own timer instead of a listener, performance
would improve.  I coded a Quartz-triggered method that calls iterates over
jmsTemplate.recieve() for a given batch size.  The messages are sent in one
batch to a remote REST service.

This has not improved performance.  After doing some research, I found that
a caveat of the jmsTemplate is that you do not really want to be calling
jmsTemplate.receive() because it opens a new connection & session each time. 
This is bad.

Here is where I need your help:
1) Is there not a way to use the Spring DefaultMessageListenerContainer to
rid the queue of many messages at once?  My confusion lies in the
implementation of the onMessage() method where I believe only one message is
available at a time. 

2) Is there a way I can set a timer so that queue is only purged when I want
it to be?  Perhaps this goes against the MDP pattern but I would really love
some education here.

The forums seem to point to JMS Transactions as a solution for batching
objects from a JMS queue.   I am also unfamiliar with how to tie this into
the DefaultMessageListenerContainer.

Any help or direction you could provide would be most appreciated.

Thank you,

Jonathan
Developer from NYC
-- 
View this message in context: 
http://old.nabble.com/Processing-multiple-messages-in-the-queue-at-once-tp27067252p27067252.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to