Uploaded image for project: 'ServiceMix Components'
  1. ServiceMix Components
  2. SMXCOMP-288

Rollback does not work when using XA

    XMLWordPrintableJSON

Details

    • Patch Available

    Description

      When the "transactionnal" BC JMS receives a JBI exchange with status ERROR, it deletes it from the queue instead of replays it !

      BC JMS Config :
      ----------------------

      <?xml version="1.0" encoding="UTF-8"?>

      <beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
      xmlns:amq="http://activemq.org/config/1.0"
      xmlns:janus="http://www.etnic.be/janus">

      <jms:consumer service="janus:ServiceJmsIn" endpoint="endpoint"
      targetService="janus:ServicePipeline" targetEndpoint="endpoint"
      destinationName="queue/TEST_REJOUER"
      connectionFactory="#connectionFactory" synchronous="true"
      concurrentConsumers="8" listenerType="default"
      transacted="xa" cacheLevel="3" />

      <amqpool:xa-pool xmlns:amqpool="http://jencks.org/amqpool/2.0"
      id="connectionFactory"
      brokerURL="tcp://localhost:51616?jms.redeliveryPolicy.useExponentialBackOff=true&jms.redeliveryPolicy.maximumRedeliveries=3&wireFormat.maxInactivityDuration=0"
      transactionManager="#transactionManager" maxConnections="8" />

      <bean id="transactionManager"
      class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName"
      value="javax.transaction.TransactionManager" />
      </bean>

      </beans>

      Exception :
      ---------------

      10:14:49,233 | ERROR | DefaultMessageListenerContainer-1 | MessageListenerContainer | stractMessageListenerContainer 929 | Execution of JMS message listener failed
      javax.jms.JMSException: Error sending JBI exchange
      at org.apache.servicemix.jms.endpoints.AbstractConsumerEndpoint.onMessage(AbstractConsumerEndpoint.java:388)
      at org.apache.servicemix.jms.endpoints.JmsConsumerEndpoint$1.onMessage(JmsConsumerEndpoint.java:387)
      at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:833)
      at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:794)
      at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:767)
      at org.springframework.jms.listener.DefaultMessageListenerContainer.doReceiveAndExecute(DefaultMessageListenerContainer.java:531)
      at org.springframework.jms.listener.DefaultMessageListenerContainer.receiveAndExecute(DefaultMessageListenerContainer.java:459)
      at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:889)
      at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:842)
      at org.springframework.core.task.SimpleAsyncTaskExecutor$ConcurrencyThrottlingRunnable.run(SimpleAsyncTaskExecutor.java:203)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: org.apache.servicemix.jbi.FaultException: <?xml version="1.0" encoding="UTF-8"?><janusRequest xmlns="http://www.etnic.be/janus">
      <content>
      <blabla>coucou</blabla>
      </content>
      </janusRequest>
      at org.apache.servicemix.eip.patterns.Pipeline.processAsync(Pipeline.java:353)
      at org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
      at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
      at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:463)
      at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
      at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:595)
      at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
      at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
      at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
      at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
      at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
      ... 1 more

      Attachments

        1. servicemix.txt
          304 kB
          Noseda Anne
        2. TEST_REJOUER_SA-1.0.jar
          145 kB
          Noseda Anne
        3. test_rejouer.jar
          5 kB
          Noseda Anne
        4. XA_transaction_patch.txt
          0.9 kB
          denis

        Activity

          People

            gnodet Guillaume Nodet
            anoseda Noseda Anne
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: