Well, it's not safe to execute the completions before the Vm consumer has finished processing, because the InputStream could be closed by the time the Vm consumer starts processing the exchange.
I agree with Willem that the current implement is correct. The safest option is to convert the body to a String, and either use the threads DSL or inOnly(vm:...) to modify the exchange pattern onwards. Raúl. On 21 Feb 2013 17:13, "Bilgin Ibryam" <bibr...@gmail.com> 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 >