Hi Bilgin, I think current camel behavior is right. If the exchange is handled rightly, the file will not be moved. If the further processor doesn't start, the file should not be moved at the same time. It could be very helpful if we restart the camel context at this time, and we will lose the file which is not handled.
-- Willem Jiang Red Hat, Inc. FuseSource is now part of Red Hat Web: http://www.fusesource.com | http://www.redhat.com Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English) http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) Twitter: willemjiang Weibo: 姜宁willem On Monday, February 25, 2013 at 6:22 AM, Bilgin Ibryam wrote: > Hi Willem, > > If I set waitForTaskToComplete=Alway or > waitForTaskToComplete=IfReplyExpectet SEDA will will not handover the > completions, but it will also block and wait for the exchange to be > processed and the it will complete the exchange. So in this case, if there > is no seda consumer to process the exchange, the seda producer will be > blocked and waiting for timeout. > > waitForTaskToComplete=Never is a little better, it is not blocking the seda > producer, but it hands over the completions too. In that case the seda > producer is not blocked and can process other exchanges, but this causes > issues with some components (like the file consumer) which relies on the > completions to be completed before processing the next exchange. > > What I propose is additional option, which will be used to control whether > the completions to be handed over or not when waitForTaskToComplete=Never > is set. > > Thanks > Bilgin > > > On 22 February 2013 08:06, Willem jiang <willem.ji...@gmail.com > (mailto:willem.ji...@gmail.com)> wrote: > > > It looks like you need to set the option waitForTaskToComplete=Alway or > > waitForTaskToComplete=IfReplyExpected to make sure the Seda component > > doesn't hand over the completions. > > I think current Camel feature just make sure the file isn't deleted until > > the file is processed. > > > > > > -- > > Willem Jiang > > > > Red Hat, Inc. > > FuseSource is now part of Red Hat > > Web: http://www.fusesource.com | http://www.redhat.com > > Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) > > (English) > > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) > > Twitter: willemjiang > > Weibo: 姜宁willem > > > > > > > > > > > > On Friday, February 22, 2013 at 1:12 AM, Bilgin Ibryam wrote: > > > > > Hi, > > > > > > I have a route where I consume from a file endpoint and put them in VM > > > endpoint, so that another camel route from different camel app can > > > > > > process > > > it a little later asynchronously. > > > > > > The file endpoint has move=processed for removing the processed files, > > but > > > even the exchanges are delivered to VM endpoint, the exchange is not > > > considered completed, so the original file stays locked and cannot > > > > > > process > > > other files before I start the second camel application and process the > > > exchanges from VM endpoint. > > > > > > SEDA has waitForTaskToComplete option, which controls whether the caller > > > should wait for the async task to complete or not before continuing. But > > > even when waitForTaskToComplete=Never is set, the completions are handed > > > over to VM queue, so it is not possible to complete the exchange. > > > > > > Is there a way to complete the exchange when it is put in VM queue? Or > > > there is a possibility for extending SEDA component with additional > > > > > > option > > > for not handling over the completions when waitForTaskToComplete=Never is > > > set? > > > > > > WDYT > > > Bilgin > > >