On Thu, Mar 7, 2013 at 11:10 AM, valerian.merkling
<[email protected]> wrote:
> Hi,
>
> My route read a file, parse the xml stuff inside, valid and transform it to
> finally write it somewhere else.
>
> My goal is : on any unhandled error, rollback and redeliver up to X times,
> every Y seconds and finally send the original file on another queue.
>
> Right now, i've defined a deadLetterChannel, which does almost all the job,
> except the message sent on the dead end queue is not the original file, but
> the one just before the unhandled error.
>

There is an option to use the original message you should set to true.


> I guess I've to deal with some transactionnal stuff, i've seen some example
> about transaction on JMS endpoint, but nothings on file so i'm not sure
> about the right way to follow...
>
> Here is the code :
>
>     <bean name="transform-xxx-yyy"
> class="TEST.esb.transform.XXXtoYYYTransform" />
>     <bean id="myDeadLetterErrorHandler"
> class="org.apache.camel.builder.DeadLetterChannelBuilder">
>         <property name="deadLetterUri" value="activemq:queue:toretry"/>
>         <property name="redeliveryPolicy" ref="myRedeliveryPolicyConfig"/>
>     </bean>
>     <bean id="myRedeliveryPolicyConfig"
> class="org.apache.camel.processor.RedeliveryPolicy">
>         <property name="maximumRedeliveries" value="6"/>
>         <property name="redeliveryDelay" value="10000"/>
>     </bean>
>
>     <camelContext id="central-cr-colisage"
> xmlns="http://camel.apache.org/schema/spring"; >
>         <propertyPlaceholder id="properties"
> location="file:D:/TEST/esb.properties" />
>         <route id="xxx-to-yyy">
>             <from uri="file://{{esb.colisage.root}}in//?delete=true" />
>                 <convertBodyTo type="java.lang.String"/>
>                 <to uri="validator:file:D://TEST//xsd//XXX.xsd"/>
>                 <to uri="file://{{esb.colisage.root}}save//" />
>                 <to uri="transform-xxx-yyy"/>
>                 <to uri="validator:file:D://TEST//xsd//YYY.xsd"/>
>                 <to uri="file://F:/{{esb.colisage.output.folder}}" />
>         </route>
>                 <route id="error-to-retry-route">
>             <from uri="activemq:queue:toretry"/>
>             <log message="Parking ${in.headers.camelFileName}"
> loggingLevel="ERROR"/>
>             <to uri="file://{{esb.colisage.root}}retry//" />
>         </route>
>         </camelContext>
>
>
> I don't know if i have to use the TransactionnalClient or if there's a way
> to give a transactionnal aspect to the deadLetterChannel. Any help is
> welcome !
>
> Regards,
>
> Valerian
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/TransactionnalDeadLetterChannel-tp5728729.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: [email protected]
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to