Claus, I think 'transferException' option is only available in Camel 2.0? I have to use 1.6.1...
On Tue, Aug 25, 2009 at 8:50 AM, Claus Ibsen<[email protected]> wrote: > See transferException option on Camel JMS > > > On Tue, Aug 25, 2009 at 5:47 PM, Ilya S<[email protected]> wrote: >> Hi Claus, >> >> Yes, I believe I am using request/reply over JMS. >> >> Is there a way to ask Camel to commit a TX at some point in my route? >> >> I just sent a clarification on what I'm actually trying to accomplish: >> if some endpoint in the middle failed, I would the the error to be >> propagated back to the original producer, and I was hoping that this >> can be done. >> >> Thank you. >> >> On Mon, Aug 24, 2009 at 10:49 PM, Claus Ibsen<[email protected]> wrote: >>> Hi >>> >>> Are you doing request/reply over JMS and want to do that with transactions? >>> If so that is not possible as messages are not commited to the JMS >>> queue before the TX is comitted. >>> >>> >>> >>> On Tue, Aug 25, 2009 at 1:55 AM, Ilya S<[email protected]> wrote: >>>> Hi All, >>>> >>>> I'm using Camel 1.6.1 (cannot use 2.0) , with Spring 2.5.6, and ActiveMQ >>>> 5.2. >>>> >>>> I'm trying to set up Transaction Manager so that my transactions are >>>> rolled back on error. >>>> Here is my camel xml config adopted from the examples: >>>> ========================================================================= >>>> >>>> <context:component-scan base-package="org.apache.camel.example.server"/> >>>> >>>> <camel:camelContext id="camel"> >>>> <camel:package>org.apache.camel.example.server</camel:package> >>>> <camel:jmxAgent id="agent" createConnector="true"/> >>>> </camel:camelContext> >>>> >>>> <broker:broker useJmx="false" persistent="false" brokerName="localhost"> >>>> <broker:transportConnectors> >>>> <broker:transportConnector name="tcp" >>>> uri="tcp://localhost:61616"/> >>>> </broker:transportConnectors> >>>> </broker:broker> >>>> >>>> <bean id="jms" class="org.apache.camel.component.jms.JmsComponent"> >>>> <property name="connectionFactory" ref="jmsConnectionFactory"/> >>>> <property name="transacted" value="true"/> >>>> <property name="transactionManager" ref="jmsTransactionManager"/> >>>> <property name="transactionTimeout" value="50000"></property> >>>> </bean> >>>> >>>> <bean id="redeliveryPolicy" >>>> class="org.apache.activemq.RedeliveryPolicy"> >>>> <property name="maximumRedeliveries" value="-1"/> >>>> </bean> >>>> >>>> <bean id="jmsConnectionFactory" >>>> class="org.apache.activemq.ActiveMQConnectionFactory"> >>>> <!-- use the vm protocol as the JMS broker is running in >>>> the same >>>> jvm as Camel --> >>>> <property name="brokerURL" value="vm://localhost"/> >>>> <property name="redeliveryPolicy" ref="redeliveryPolicy"/> >>>> </bean> >>>> >>>> <bean id="jmsTransactionManager" >>>> class="org.springframework.jms.connection.JmsTransactionManager"> >>>> <property name="connectionFactory" >>>> ref="jmsConnectionFactory" /> >>>> </bean> >>>> >>>> <bean id="PROPAGATION_REQUIRED" >>>> class="org.springframework.transaction.support.TransactionTemplate"> >>>> <property name="transactionManager" >>>> ref="jmsTransactionManager"/> >>>> </bean> >>>> >>>> <bean id="transactionErrorHandler" >>>> class="org.apache.camel.spring.spi.TransactionErrorHandlerBuilder"> >>>> <property name="transactionTemplate" >>>> ref="PROPAGATION_REQUIRED"/> >>>> </bean> >>>> ==================================================================== >>>> >>>> I have 2 routes. >>>> Route 1 (extends from SpringRouteBuilder) >>>> >>>> TransactionTemplate template = >>>> bean(org.springframework.transaction.support.TransactionTemplate.class, >>>> "PROPAGATION_REQUIRED"); >>>> Policy<TransactionTemplate> pp = new >>>> SpringTransactionPolicy<TransactionTemplate>(template); >>>> >>>> from("jms:queue:numbers") >>>> .policy(pp) >>>> .to("jms:queue:mybadqueue?transactedInOut=true") >>>> .to("multiplier"); >>>> >>>> >>>> Route 2: >>>> from("jms:queue:mybadqueue") >>>> .process(new Processor() { >>>> public void process(Exchange arg0) throws Exception >>>> { >>>> throw new Exception("Hello World >>>> Exception"); >>>> } >>>> >>>> }) >>>> .to("multiplier"); >>>> >>>> >>>> With this configuration I never get messages sent to >>>> "jms:queue:mybadqueue". >>>> Could someone point me in the right direction? Please, advise. >>>> >>>> Thank you. >>>> Ilya. >>>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> Apache Camel Committer >>> >>> Open Source Integration: http://fusesource.com >>> Blog: http://davsclaus.blogspot.com/ >>> Twitter: http://twitter.com/davsclaus >>> >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus >
