[ https://issues.apache.org/jira/browse/CAMEL-20521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen updated CAMEL-20521: -------------------------------- Fix Version/s: 4.x (was: 4.5.0) (was: 4.4.2) > camel-amqp - AMQP publisher application is losing messages with local JMS > transaction enabled > --------------------------------------------------------------------------------------------- > > Key: CAMEL-20521 > URL: https://issues.apache.org/jira/browse/CAMEL-20521 > Project: Camel > Issue Type: Bug > Components: camel-amqp > Affects Versions: 4.4.0 > Reporter: Luigi De Masi > Assignee: Luigi De Masi > Priority: Major > Fix For: 4.x > > Attachments: screenshot-1.png, screenshot-2.png > > > 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}} : > !screenshot-1.png! > that calls {{org.springframework.jms.support.JmsUtils}} > !screenshot-2.png! > 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: > {code:java} > 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) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)