Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Invalid
-
5.8.0
-
None
-
None
-
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Description
We have a case where we are trying to startup 100s of camel routes and it appears to be causing an issue where the consumer is only partially started and the thread is stuck waiting for for the consumer to be fully created. The consumer appears to be created on the broker side so that it is getting messages enqueued and dispatched, just never serviced.
Could this be due to our connection pool being too small? Could we avoid this problem with asyncSend?
"Camel (AppsJVM) thread #28 - JmsConsumer[response.queue]" - Thread t@318
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <ee029ee> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
at org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1380)
at org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1912)
at org.apache.activemq.ActiveMQMessageConsumer.<init>(ActiveMQMessageConsumer.java:273)
at org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1144)
at org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1088)
at org.apache.activemq.ActiveMQSession.createConsumer(ActiveMQSession.java:1001)
at org.apache.activemq.pool.PooledSession.createConsumer(PooledSession.java:311)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createConsumer(AbstractPollingMessageListenerContainer.java:503)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:224)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1094)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1070)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1063)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:960)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)Locked ownable synchronizers:
- locked <4deb7015> (a java.util.concurrent.ThreadPoolExecutor$Worker)
<bean id="JMSPooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="maxConnections" value="8" />
<property name="maximumActiveSessionPerConnection" value="500" />
<property name="idleTimeout" value="0" />
<property name="connectionFactory" ref="JMSConnectionFactory" />
</bean>