camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Camel 2.3.0 - File Endpoint with delete=true and moveFailed doesn't move failed files
Date Wed, 30 Jun 2010 04:18:36 GMT
Hi

I have created a ticket
https://issues.apache.org/activemq/browse/CAMEL-2879

As it is in fact an oversight. We should support having Camel to
delete the files if OK and if ERROR then move the files to a selected
directory.
Its in fact a common approach.


On Wed, Jun 30, 2010 at 5:17 AM, Willem Jiang <willem.jiang@gmail.com> wrote:
> Hi,
>
> I just checked the code of Camel File component, you can't specify the
> delete and move (moveFailed) option at the same time, as current Camel file
> component didn't support these two strategy at same time.
>
> I think you can do some work around by using onException() with the delete
> option, like this :
>
> onException(IllegalArgumentException.class).useOriginalMessage().to("file://target/failed/error");
> from("file://target/failed?delete=true") ....
>
> Willem
> ----------------------------------
> Apache Camel, Apache CXF committer
> Open SOA http://www.fusesource.com
> Blog http://willemjiang.blogspot.com
> Tiwtter http://twitter.com/willemjiang
>
> jonathanq wrote:
>>
>> I am using Camel 2.3.0 - I have a file endpoint that is configured with
>> delete=true and moveFailed=error.  Yet when an error occurs, it does not
>> move it to a failed directory, and instead keeps re-trying the exchange.
>>
>> Here is a route that shows my setup:
>>
>> public void configure() throws Exception {
>>
>> onException().process(myErrorProcessor).to("mock:error");
>>
>>
>> from("file://c:\\input?delete=true&moveFailed=error").process(someProcessor).unmarshal().xstream().to("mock:result")
>>
>> }
>>
>> The processor just does a simple transformation - however I am feeding it
>> invalid XML so that the unmarshal will fail.  The error processor is
>> executed, but when it completes and sends its error message to
>> "mock:error"
>> - the whole route starts again.
>>
>> I removed the "delete=true" so it was just:
>> "file://c:\\input?moveFailed=error".  Then when an error occurs, it moves
>> the file to error subdirectory.  And the completed files go to ".camel".
>>
>> I don't want to have to remove the completed files manually so I changed
>> the
>> route to:
>>
>> "file://c:\\input?delete=true"
>> Now - regardless of whether an exception occurs - the input file is
>> deleted.
>>
>> It seems to be that the combination of both "delete=true" and
>> "moveFailed=error" seems to cause the route to keep re-trying
>> indefinately,
>> but on their own - they work exactly as advertised.
>>
>> Is the delete=true supposed to only moved completed (successfully) files?
>> The documentation only says it will delete them after they are processed
>> (doesn't say if they succeeded or not).
>>
>> I added a handled(true) on my exception route - and then it just deletes
>> the
>> file and never moves it to the error folder.
>>
>> I can remove the delete=true and my process will do what I want - however
>> then I have to make a manual step later to delete the contents of the
>> .camel
>> folder for the ones that did work.  And I don't want to do that, seems to
>> me
>> the delete=true should handle that.
>>
>> Jonathan
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Mime
View raw message