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
>

Reply via email to