Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-20521

camel-amqp - AMQP publisher application is losing messages with local JMS transaction enabled

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.20.9, 3.22.1, 4.0.4, 4.4.0
    • 3.21.5, 3.22.2, 4.0.5, 4.4.2, 4.6.0
    • camel-amqp
    • None
    • Moderate

    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

        1. screenshot-2.png
          38 kB
          Luigi De Masi
        2. screenshot-1.png
          56 kB
          Luigi De Masi

        Activity

          People

            ldemasi Luigi De Masi
            ldemasi Luigi De Masi
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: