Details
Description
camel-amqp with local transaction enabled loses messages because to invoke the commit, it uses a spring-jms routine that catch and ignore a couple of exceptions that occurs and should not be ignored:
In org.apache.camel.component.jms.JmsConfiguration.CamelJmsTemplate :
that calls org.springframework.jms.support.JmsUtils
In the comment it says that jakarta.jms.TransactionInProgressException and jakarta.jms.IllegalStateException can only happen in case of a JTA transaction but it can happens
also in case of connection problems:
javax.jms.IllegalStateException: The Session is closed at org.apache.qpid.jms.JmsSession.checkClosed(JmsSession.java:1113) at org.apache.qpid.jms.JmsSession.getTransacted(JmsSession.java:213) at org.messaginghub.pooled.jms.JmsPoolSession.getTransacted(JmsPoolSession.java:256) at nl.ns.hip.cci.jms.CamelJmsTemplate.doSendToDestination(CamelJmsTemplate.java:94) at nl.ns.hip.cci.jms.CamelJmsTemplate.lambda$send$0(CamelJmsTemplate.java:33) at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:504) at nl.ns.hip.cci.jms.CamelJmsTemplate.send(CamelJmsTemplate.java:31) at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:425) at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:392) at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:159) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:818) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:726) at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:181) at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59) at org.apache.camel.processor.Pipeline.process(Pipeline.java:165) at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:392) at org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:269) at org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:187) at org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:130) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
Attachments
Attachments
Issue Links
- relates to
-
CAMEL-20553 camel-amqp: increase test coverage for edge cases
- Open
- links to