Hi, I've experienced some strange behavior during trying to experiment with Apache Camel 4.0 SJMS2 and Wildfly 29.0.1-1 and Apache ActiveMQ Artemis: I see zillions of logs below if messages are sent to JMS endpoint with a given rate (heavily parallel execution)...
<warning> AMQ212051: Invalid concurrent session usage. Sessions are not supposed to be used by more than one thread concurrently. java.lang.Exception: trace mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.startCall(ClientSessionImpl.java:1587) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.acknowledge(ClientSessionImpl.java:1209) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.doAck(ClientConsumerImpl.java:1138) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.acknowledge(ClientConsumerImpl.java:785) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientMessageImpl.acknowledge(ClientMessageImpl.java:136) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientMessageImpl.acknowledge(ClientMessageImpl.java:38) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:136) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1001) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1154) org.apache.activemq.artemis.journal//org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:56) ... 5 more Here we can see some stack traces with SJMS origins: [L] 2023-12-07T14:19:07.838000000Z <warning> [org.apache.activemq.artemis.core.client]: [THR-11201] [CID-A1298BD202] AMQ212051: Invalid concurrent session usage. Sessions are not supposed to be used by more than one thread concurrently.java.lang.Exception: trace mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.startCall(ClientSessionImpl.java:1587) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.queueQuery(ClientSessionImpl.java:781) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.jms.client.ActiveMQSession.checkDestination(ActiveMQSession.java:411) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.jms.client.ActiveMQSession.createProducer(ActiveMQSession.java:375) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms2.jms.Jms2ObjectFactory.createMessageProducer(Jms2ObjectFactory.java:217) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms2.jms.Jms2ObjectFactory.createMessageProducer(Jms2ObjectFactory.java:209) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.consumer.EndpointMessageListener$1.doInJms(EndpointMessageListener.java:289) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.SjmsTemplate.execute(SjmsTemplate.java:114) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.consumer.EndpointMessageListener.sendReply(EndpointMessageListener.java:304) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.consumer.EndpointMessageListener$EndpointMessageListenerAsyncCallback.done(EndpointMessageListener.java:448) ... 19 more [L] 2023-12-07T14:19:07.839000000Z <warning> [org.apache.activemq.artemis.core.client]: [THR-11152] [CID-23EB726581] AMQ212051: Invalid concurrent session usage. Sessions are not supposed to be used by more than one thread concurrently.java.lang.Exception: trace mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.startCall(ClientSessionImpl.java:1587) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.doSend(ClientProducerImpl.java:216) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:140) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:122) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.jms.client.ActiveMQMessageProducer.doSendx(ActiveMQMessageProducer.java:481) mailto:org.apache.activemq.artemis@2.26.0//org.apache.activemq.artemis.jms.client.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:192) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.SjmsTemplate.send(SjmsTemplate.java:199) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.consumer.EndpointMessageListener$1.doInJms(EndpointMessageListener.java:290) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.SjmsTemplate.execute(SjmsTemplate.java:114) deployment.db.connector-10.0.0-artemis-SNAPSHOT.war//org.apache.camel.component.sjms.consumer.EndpointMessageListener.sendReply(EndpointMessageListener.java:304) ... 20 more Excerpt from relevant code: JmsRoute.java: package com.yyy.zzz import org.apache.camel.ExchangePattern; public class JmsRoute extends AbstractInternalRouteBuilder { static final String ROUTE_ID = "JmsRoute"; public static final String JMS_ROUTE_ENDPOINT = "direct:jms"; private static final String JMS_ENDPOINT = "sjms2:zzz_request_queue"; private static final String JMS_REPLY_QUEUE = "zzz_reply_queue"; public JmsRoute() {} @Override public void configureErrorHandling() throws Exception {} @Override public void configureRoutes() throws Exception { from(JMS_ROUTE_ENDPOINT) .routeId(ROUTE_ID) .to(ExchangePattern.InOut, createJmsProducerUri()) .end(); from(createJmsConsumerUri()) .routeId(ROUTE_ID + "JmsQueue") .to(<<<wherever>>>) .end(); } private String createJmsProducerUri() { String uri = String.format( "%s?replyTo=db_reply_queue&replyToType=Exclusive&deliveryPersistent=false&replyToConcurrentConsumers=%s&deliveryMode=1&requestTimeout=%s&timeToLive=%s", JMS_ENDPOINT, config.jmsRequestQueues(), config.requestTimeout(), config.requestTimeout()); // "sjms2:db_request_queue?replyTo=db_reply_queue&replyToType=Exclusive&deliveryPersistent=false&replyToConcurrentConsumers=4&deliveryMode=1&requestTimeout=2000&timeToLive=1600"; return uri; } private String createJmsConsumerUri() { String uri = String.format( "%s?asyncConsumer=true&replyToDeliveryPersistent=false&concurrentConsumers=%s", JMS_ENDPOINT, config.jmsResponseQueues()); return uri; } } It is used from: @Override public void configureRoutes() throws Exception { from(OperationEndpoints.XXX_ROUTE) .routeId(ROUTE_ID) .process(requestBuilder) .to(JmsRoute.JMS_ROUTE_ENDPOINT) .process(answerProcessor) .end(); } Any help/hint is more than welcome and thanks in advance. Br,