Hello.

We observed a strange behavior on our JMS connections that we manage
using a PAX JMS factory. Connections used by Camel consumers, with or
without activity, seem to be closed after 30 minutes. A tcpdump on the
karaf side shows that a connection with a consumer has its
InactivityMonitor that sends a "KeepAliveInfo" every 10 seconds, but
ends after 30 minutes with 2 "RemoveInfo" (probably closing the
consumer and the session) and "ShutdownInfo" (probably closing the
connection itself). This happens when no real traffic is done on the
queue, but also when messages are sent and consumed every minute.

Here are the logs that show the Camel consumer that detects the close
connection every 30 minutes :

2023-07-13T10:32:46,824 | WARN  | Camel (appvte002-f027_context)
thread #50 - JmsConsumer[appvte002-f027.internal.queue] |
DefaultJmsMessageListenerContainer | 222 -
org.apache.servicemix.bundles.spring-jms - 5.3.23.1 |  | Setup of JMS
message listener invoker failed for destination
'appvte002-f027.internal.queue' - trying to recover. Cause: The
Session is closed
2023-07-13T11:02:47,422 | WARN  | Camel (appvte002-f027_context)
thread #51 - JmsConsumer[appvte002-f027.internal.queue] |
DefaultJmsMessageListenerContainer | 222 -
org.apache.servicemix.bundles.spring-jms - 5.3.23.1 |  | Setup of JMS
message listener invoker failed for destination
'appvte002-f027.internal.queue' - trying to recover. Cause: The
Consumer is closed
2023-07-13T11:32:47,982 | WARN  | Camel (appvte002-f027_context)
thread #52 - JmsConsumer[appvte002-f027.internal.queue] |
DefaultJmsMessageListenerContainer | 222 -
org.apache.servicemix.bundles.spring-jms - 5.3.23.1 |  | Setup of JMS
message listener invoker failed for destination
'appvte002-f027.internal.queue' - trying to recover. Cause: The
Consumer is closed
2023-07-13T12:02:48,595 | WARN  | Camel (appvte002-f027_context)
thread #53 - JmsConsumer[appvte002-f027.internal.queue] |
DefaultJmsMessageListenerContainer | 222 -
org.apache.servicemix.bundles.spring-jms - 5.3.23.1 |  | Setup of JMS
message listener invoker failed for destination
'appvte002-f027.internal.queue' - trying to recover. Cause: The
Consumer is closed

Here is our PAX configuration :

# Connection configuration
type=activemq
connectionFactoryType=ConnectionFactory

# Names
name=alice-jms
osgi.jndi.service.name=jms/alice

# Connection factory properties
#jms.url=failover:(tcp://mq1:61616,tcp://mq2:61616)
jms.url=tcp://mq1:61616
jms.user=karaf
jms.password=karaf
jms.clientIDPrefix=CATERPILLAR

# Set XA transaction
xa=false

# Connection pooling
pool=pooledjms
# Maximum number of connections for each user+password (default 1)
pool.maxConnections=256

Do you know if the PAX connection factory, with the given pooling
option, may be at the origin of such connection closing ? I don't see
why the Camel endpoint could close its own consumer... If this is a
PAX behavior, what option should be set to avoid it ?

Thanks for your help.

Regards.

Reply via email to