activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mathias <math...@afjochnick.net>
Subject Active MQ, Only one of many MessageListeners stuck while reading still causes queue to grow
Date Fri, 04 Mar 2016 12:22:13 GMT
ActiveMQ version 5.10.2

I have a weird behavior on an ActiveMQ queue i can't understand. Not
super-good at ActiveMQ so i'm hoping that someone can help out.

I have a queue, configured in tomcat. I have a MessageListener configured
through Spring with 3 instances. They basically do an HTTP request, process
the answer and put the answer on another queue.

Yesterday, i had connectivity issues, so the (SOAP) requests timed out. When
that happens, I throw a custom exception, catch it in "onMessage" and send
an error message on the response queue. I can then see that the listener
took another message off the queue, and then hung. No exception or anything.
Why this happened i'm not sure of, i'm investigating that.

But here's the strange thing:

This happened to 2 of my three MessageListeners. They stopped, but my third
one still reads from the queue. HOWEVER, the queue is growing and the
queuesize was more than 500 messages before i restarted the server.

The two listeners that were hung each had a "dispatchedqueuesize" of about
half of that each.

So, to me it seems that the messages that were put on the queue become
"reserved" for each of the listeners, even if they don't actively read from
the queue. I can see that the "active" listener still process messages, so
why doesn't it process every message?? I want the listeners to just read
messages in the order they come in. If only one "is left" it should still
read every message put on the queue. Why isn't it doing that??

Pointers much appreciated.

Spring config for receiving end below:

<amq:connectionFactory id="refConnectionFactory"
brokerURL="${jms.broker.url}" clientID="theclient"/>
<bean id="connectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="refConnectionFactory"/>
    <property name="sessionCacheSize" value="10"/>
</bean>


<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <constructor-arg ref="connectionFactory"/>
</bean>


<jms:listener-container concurrency="3">
    <jms:listener id="locationListener" destination="location.out"
ref="locationQueryListener"/>
</jms:listener-container>



--
View this message in context: http://activemq.2283324.n4.nabble.com/Active-MQ-Only-one-of-many-MessageListeners-stuck-while-reading-still-causes-queue-to-grow-tp4708872.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message