Note that using JmsTemplate without some pooling is a very inefficient
way of working with JMS. JmsTemplate is generally not recommended for
consuming messages. The PooledConnectionFactory only pools for sending
messages - not consuming them. To consume messages with pooled I'd
recommend you either use Spring 2's consumer containers or Jencks.

http://incubator.apache.org/activemq/jmstemplate-gotchas.html
http://incubator.apache.org/activemq/how-do-i-use-jms-efficiently.html


On 8/19/06, Alex Makarenko <[EMAIL PROTECTED]> wrote:

Hello everyone!
I discovered some strange behavior of ActiveMQ 4.x in terms of
MessageConsumer handling. It seamed that ActiveMQ 4.x versions in some cases
do not release MessageConsumers while versions 3.2.x do.
I have application that must work with limited system resources such as
number of threads and number of simultaneously running tasks on message
processing. A cannot use asynchronous message processing instead I have to
use thread pool with 3 threads. Every thread creates MessageConsumer and
tries to process message in case of failures massage is rolled back to
queue. MessageConsumers are created to support independant transactions for
every thread.
Initially I was using ActiveMQ 4.0.1   Spring's JmsTemplate and
TransactionTemplate. But after day or two of work I've got OutOfMemoryError.
I tried to dig what's going on with YourKit Java Profiler and discovered
that ActiveMQMessageConsumer objects that was created with JmsTemplate in
each thread are still in memory and never get garbage collected. I thought
it's a Spring bug but when I rewrote application to use clean JMS the
situation do not changed.
I am attaching screen shots from YourKit Java Profiler with Spring and
without; along with sample application. It seams that ActiveMQ leaks
MessageConsumers. Again it does not happen with versions 3.2.2.

http://gis.softline.kiev.ua/sample.zip sample application

Profiler results on application with Spring

http://gis.softline.kiev.ua/profiler_1.gif
Profiler results on application without Spring

http://gis.softline.kiev.ua/profiler_2.gif

I think I've fixed the bug in SVN trunk if you want to try tomorrows
4.1-SNAPSHOT build it should now be resolved.

--

James
-------
http://radio.weblogs.com/0112098/

Reply via email to