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.