Hi,

We are heavy camel and activemq users. We experience a small problem that is
easily reproducible.

We use Camel to connect to activemq. We link with the version 5.11.1 of the
activemq libraries.
We use Camel version 2.14 but it is probably not relevant in this context.

We create a pool of connection in the camel via spring.

<bean id="jms" 
      class="org.apache.activemq.camel.component.ActiveMQComponent">
      <property name="brokerURL" value="tcp://127.0.0.1:61616"/>
 </bean>

And after that a route listening to a topic and pushing the result into
another one such as:

<route>
<from uri="jms:topic:aaaa"/>
<to uri="jms:topic:bbbb"/>
</route>

Everything is working perfectly.

BUT, now we use a socket killer software in order to kill one of the
connection to the broker (Client side). On windows this can be done via
TCPVIEW.exe.

The system detects the deconnection and gives the following log:

16:25:45,618  INFO PooledConnectionFactory:110 - Expiring connection
ActiveMQConnection
{id=ID:XXXXXXXX-2550-1435241073096-1:1,clientId=ID:XXXXXXXXX-2550-1435241073096-0:1,started=false}
on IOException: java.net.SocketException: Connection reset

Which is perfect, but after that, the system will never recover and will
keep on logging the following error:

16:33:31,389  WARN DefaultJmsMessageListenerContainer:839 - Setup of JMS
message listener invoker failed for destination 'XXXXXXXXXX' - trying to
recover. Cause: The Session is closed
javax.jms.IllegalStateException: The Session is closed
        at
org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:767)
        at
org.apache.activemq.ActiveMQSession.createTopic(ActiveMQSession.java:1294)
        at
org.apache.activemq.jms.pool.PooledSession.createTopic(PooledSession.java:247)
        at
org.springframework.jms.support.destination.DynamicDestinationResolver.resolveTopic(DynamicDestinationResolver.java:82)
        at
org.springframework.jms.support.destination.DynamicDestinationResolver.resolveDestinationName(DynamicDestinationResolver.java:63)
        at
org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:100)
        at
org.springframework.jms.listener.AbstractPollingMessageListenerContainer.createListenerConsumer(AbstractPollingMessageListenerContainer.java:221)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.initResourcesIfNecessary(DefaultMessageListenerContainer.java:1124)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1100)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1093)
        at
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:990)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
16:33:31,389  INFO DefaultJmsMessageListenerContainer:891 - Successfully
refreshed JMS Connection
16:33:36,396  WARN DefaultJmsMessageListenerContainer:839 - Setup of JMS
message listener invoker failed for destination 'EVENT_SCREENS' - trying to
recover. Cause: The Session is closed
javax.jms.IllegalStateException: The Session is closed

The system will never recreate the session by itself and the client must be
restarted. The problem does not happen that often in the real life
(Otherwise it would be unusable) but it arrives from time to time.

Thanks for these amazing products.

Regards,

Arnaud



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/ActiveMQ-Pooled-Session-tp4698203.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to