FWIW this is what I did for a transactional route to stop messages disappearing 
from the original queue if the broker went down:

<beans ... >

  <broker xmlns="http://activemq.apache.org/schema/core";
                                        id="matrixBrokerID"
                                        brokerName="matrixBroker"
                                        useJmx="true"
                                        persistent="true">

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>
    <route>
      <from uri="activemq:topic:topic1"/>
        <transacted />
        <to uri="activemq:topic:topic2"/>
    </route>
</camelContext>

        <bean id="jmsConnectionFactory" 
class="org.apache.activemq.ActiveMQConnectionFactory" 
depends-on="matrixBrokerID">
                <property name="brokerURL" 
value="vm://matrixBroker?create=false"/>
        </bean>

        <bean id="jmsTransactionManager" 
class="org.springframework.jms.connection.JmsTransactionManager">
                <property name="connectionFactory" ref="jmsConnectionFactory"/>
        </bean>

        <bean id="activemq" 
class="org.apache.activemq.camel.component.ActiveMQComponent">
                <property name="connectionFactory" ref="jmsConnectionFactory"/>
                <property name="transacted" value="true"/>
                <property name="transactionManager" 
ref="jmsTransactionManager"/>
        </bean>

</beans>

Alistair



-- 
mov eax,1
mov ebx,0
int 80h




On 19 Jul 2011, at 06:51, Claus Ibsen wrote:

> On Mon, Jul 18, 2011 at 11:04 PM, fridlyos <albert.friedl...@citi.com> wrote:
>> Hi....
>> 
>> Hoping to get some help with an design issue I'm having.  Playing around
>> with Camel error handling - trying to get an answer to following questions.
>> 
>> If an exception is cough - message flows into exception handler.  If there
>> are few redelivery attempts to be made - Camel seem to handle it correctly.
>> If, however, the systems fails during this time, the messages that were in
>> re-delivery process seem to be lost.
>> 
> 
> Yes Camel keeps in flight messages in memory
> 
>> Is there a way to prevent that?  Basically, roll back transaction completely
>> all the way up to the Queue (not internally in Camel).
>> 
> 
> You can use the Transactional Client EIP (aka transactions)
> http://camel.apache.org/transactional-client.html
> 
> A bit more here
> http://camel.apache.org/error-handling-in-camel.html
> 
> Chapter 9 in the Camel in Action book covers how to use transactions
> with Camel extensively.
> The source code for the book is freely available so they can be used
> for inspiration.
> 
> And FuseSource have a free excerpt of chapter 9 available at:
> http://fusesource.com/fuse/apache-books/
> The discount code listed on the page may have expired.
> 
> 
>> 
>> Any help is appreciated.
>> 
>> Thank you
>> 
>> --
>> View this message in context: 
>> http://camel.465427.n5.nabble.com/Camel-JMS-re-delivery-on-failure-tp4601191p4601191.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>> 
> 
> 
> 
> -- 
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to