You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by rkarumuri <rk...@nisum.com> on 2013/09/03 14:41:49 UTC
Tag with JMS Transaction for IBM MQ queue making no
difference
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.
Re: Tag with JMS Transaction for IBM MQ queue making no difference
Posted by Tom Ellis <te...@gmail.com>.
Hi Ravi,
Your MQ JmsComponent bean (configured via the 'mqConfig'
JmsConfiguration bean) is a transacted endpoint. Routes that start
with transactional endpoints will always be transactional. See
http://camel.apache.org/transactional-client.html
Cheers,
Tom
On 3 September 2013 13:41, rkarumuri <rk...@nisum.com> wrote:
> 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.