Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
5.14.5
-
None
-
None
-
JDK 1.8.0_112
spring-jms-4.3.8.RELEASE.jar
activemq-client-5.14.5.jar
Description
When using spring's DefaultMessageListenerContainer (DMLC) to consume messages from AMQ 5.14.5 server, and using prefetch of 0, spring container hangs when shutting down DMLC (e.g. on tomcat server shutdown).
Applicable 2 threads from spring client app thread dump (logs on separate network so I cannot copy/paste):
"dmlc-1" ...
at org.apache.activemq.FifoMessageDispatchChannel.dequeue(FifoMessageDispatchChannel.java:72)
- locked <> (a java.lang.Object)
at org.apache.activemq.ActiveMQMessageConsumer.dequeue(ActiveMQMessageConsumer.java:486)
at org.apache.activemq.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:648)
"http-bio-exec-11"
at org.springframework.jms.listener.DefaultMessageListenerContainer.doShutdown(DefaultMessageListenerContainer.java:571)
...
Applicable spring configuration file:
<bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=0</value>
</property>
</bean>
<bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="myQueue" />
</bean>
<bean id="dmlc" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsFactory" />
<property name="destination" ref="queue" />
<property name="messageListener" ref="myQueueConsumer" />
<property name="sessionTransacted" value="true" />
</bean>