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
>

Reply via email to