Hi Error handling is hard, especially for non transactional transports such as File / FTP and the likes.
>From what I understand from your description is that you want to poll files and upload them to SFTP. And in case this fails an email should be sent. And if this email fails then it should ???? If you where doing this with regular Java you would probably use the try .. catch .. finally. And they also exists in Camel DSL .doTry() // send file to SFTP .doCatch(Exception) .doTry() // send an email .doCatch() // log failed to send email .end() .end() And they support handled(true) as well. See more here http://davsclaus.blogspot.com/2009/04/on-road-to-camel-20-try-catch-finally.html And here: http://camel.apache.org/try-catch-finally.html However try .. catch .. finally have been overhauled in Camel 2.0m2 so you have to wait for this release or use SNAPSHOT if you want. Also the general error handling in Camel 2.0 have had a major overhaul as well. In fact I do believe that the problem with error handling, when doing error handling has been fixed in 2.0m2 (SNAPSHOT) as well. So in your case if the SMTP failed then it would not "catch this" but it should be fixed in 2.0m2. If you want to avoid consuming the same file again then use the Idempotent Consumer EIP http://camel.apache.org/idempotent-consumer.html On Tue, May 12, 2009 at 1:30 AM, turp1twin <jeff.tur...@ecloser.net> wrote: > > I am new to Camel and am having a tough time getting my route to work > properly. That being said, it is entirely possible that I am being a moron > and have missed something simple.... However, I have searched the mailing > list and have not found the answer I am looking for. Any help would be > appreciated. I am using Camel 2.0-M1 and I am trying to test my various > error handling scenarios. I am using a Java DSL with various endpoints > configured in my Spring camel-context.xml. > > Endpoints: > > <camel:endpoint id="filePollingDir" > uri="file:///Users/xxxxx/temp/polldir/"/> > > <camel:endpoint id="sFtpDestination" > > uri="sftp://r098...@sftp.someserver.com/upload?password=xxxxxx&knownHostsFile=/Users/xxxxx/.ssh/known_hosts"/> > > <camel:endpoint id="failedTransferSmtp" > uri="smtp://smtp.someserver.net?to=u...@mymail.net&from=ad...@mymail.net"/> > > Route definition: > > from(getEndpoint("filePollingDir")).onException(Exception.class).maximumRedeliveries(0).handled(true).end() > .to(getEndpoint("sFtpDestination")).onException(Exception.class).maximumRedeliveries(2).handled(true) > .to(getEndpoint("failedTransferSmtp")).onException(Exception.class).maximumRedeliveries(0).handled(true).end(); > > > Basically what I am trying to achieve is that if the SFTP producer fails I > want to send an email notifying a user that the transfer failed. I also want > to handle the case where the smtp producer might also fail. I am getting to > the SMTP endpoint (failedTransferSmtp) just fine, however, when it fails (as > intended for this particular test) it causes the "filePollingDir" consumer > to rollback and consume the source file again. This continues in a loop... > Is this behavior intended? If so, can I configure the consumer to stop > consuming the same file again? Again, I might be missing something simple, > but any help would be appreciated. Cheers! > > Jeff > > > > -- > View this message in context: > http://www.nabble.com/Error-Handling-tp23493625p23493625.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration Interview with me: http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress