Hi, 

I used <transacted/> for a IBM MQ queue to behave in a such manner that if
system crashes original message should be rolled back or placed on to
original queue. But, what I observed is  when system crashed we could see
message is placed back on to original queue *with or with out* using
<transacted> tag We did not see any difference using <transacted> tag. Can
any one help us where we go wrong in using <transacted/> tag effectively,

Below is the configuration of the same,

<camelContext id="context" xmlns="http://camel.apache.org/schema/spring";
trace="true">
     <propertyPlaceholder id="properties" location="client.properties" />
    <route id="initialRoute">
      <from uri="mqjms:java:comp/env/jms/mq/someQ?concurrentConsumers=2" />
       <transacted ref="transactionPolicy.jms.PROPAGATION_REQUIRES_NEW" />
      
      <convertBodyTo type="java.io.InputStream" />
      <unmarshal ref="jaxbDataFormat" />
       <setHeader headerName="X OBJECT">
        <simple resultType="com.x.object">${body}</simple>
      </setHeader>
      <setBody>
        <simple>${header.X}</simple>
      </setBody>
      <setHeader headerName="STATUS">
        <simple resultType="java.lang.String">${status}</simple>
      </setHeader>
    
      <choice>
        <when>
         
          <simple>${header.STATUS} == 'X'</simple>
          <to uri="bean:xbean?method=ymethod" />
        </when>
        <otherwise>
          
           <to uri="bean:xbean?method=zmethod" />
        </otherwise>
      </choice>
     
      <onException useOriginalMessage="true">
        <exception>java.lang.RuntimeException</exception>
        <exception>java.lang.Exception</exception>
        <exception>com.LException</exception>
        <redeliveryPolicy redeliveryDelay="10000"
retryAttemptedLogLevel="ERROR" maximumRedeliveries="0" />
        <handled>
          <constant>true</constant>
        </handled>
        <log message="An error occurred   ${exception}" loggingLevel="INFO"
/>
        <to uri="mqjms:java:comp/env/jms/mq/someErrorQ" />
      </onException>
       <onException useOriginalMessage="true">
        <exception>com.LException</exception>
        <redeliveryPolicy redeliveryDelay="10000"
retryAttemptedLogLevel="ERROR" maximumRedeliveries="3" />
        <handled>
          <constant>true</constant>
        </handled>
        <log message="An error occurred   ${exception}" loggingLevel="INFO"
/>
        <to uri="mqjms:java:comp/env/jms/mq/someErrorQ" />
      </onException>
    </route>
  </camelContext>

   <bean
id="lineBackOrderService.transactionPolicy.jms.PROPAGATION_REQUIRES_NEW"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
    <property name="transactionManager" ref="jmsTransactionManager" />
    <property name="propagationBehaviorName"
value="PROPAGATION_REQUIRES_NEW" />
  </bean>

  <bean id="mqjms" class="org.apache.camel.component.jms.JmsComponent"> 
    <property name="configuration" ref="mqConfig" /> 
     <property name="deliveryPersistent" value="false"/> 
     <property name="preserveMessageQos" value="true"/> 
  </bean> 
 
 
  <bean id="mqConfig"
class="org.apache.camel.component.jms.JmsConfiguration"> 
    <property name="destinationResolver" ref="jmsDestResolver" /> 
    <property name="connectionFactory" ref="mqCachingConnectionFactory" /> 
    <property name="transactionManager" ref="jmsTransactionManager" /> 
    <property name="transacted" value="true" /> 
  </bean> 
 
  <bean id="jmsDestResolver"
class="org.springframework.jms.support.destination.JndiDestinationResolver"
/> 
 
  <bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager"> 
    <property name="connectionFactory" ref="mqCachingConnectionFactory" /> 
  </bean> 
 
  <bean id="mqCachingConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory"> 
    <property name="targetConnectionFactory" ref="mqConnectionFactory" /> 
    <property name="sessionCacheSize" value="1" /> 
    <property name="reconnectOnException" value="true" /> 
  </bean> 
 
Thanks
Ravi
 



--
View this message in context: 
http://camel.465427.n5.nabble.com/Tag-transacted-with-JMS-Transaction-for-IBM-MQ-queue-making-no-difference-tp5738585.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to