Hi

If possible then using done file names is IMHO a better strategy.
Though that would require the other party to do this when it uploads
to the FTP server.



On Mon, Jun 1, 2015 at 6:10 PM, Tom Duncalf <t...@tomduncalf.com> wrote:
> Hi,
>
> I am building a Camel route to consume files uploaded by FTP and then upload
> them elsewhere. It would seem that "changed" is the most suitable readLock
> strategy for this, and I would like to set a fairly large
> readLockCheckInterval and readLockTimeout (e.g. 20s and 40s) to help prevent
> incomplete files from users with slow/intermittent connections being picked
> up by the route prematurely.
>
> What I would like to achieve is to make it so that the File consumer is not
> blocked from picking up more files for the duration of the readLockTimeout -
> that is, currently, if file1 is uploaded at t=0 and file2 uploaded at t=5,
> then the consumer picks up file1 at t=0 and is then blocked until at least
> t=20 (assuming a 20s check interval), so file2 will not be picked up until
> at least t=20 (and processed until at least t=40). Instead, I would like
> there to be (for example) more than one consumer thread, so that when the
> first consumer thread picks up file1 and is waiting until t=20, another
> consumer thread can still pick up file2 at t=5 and wait until t=25.
>
> None of the concurrency options available seem to cover this scenario - I
> understand that I can decouple the file being consumed and the subsequent
> processing using, for example, a SEDA queue, or I can split the processing
> into multiple threads after a file has been processed by the File consumer
> using the Threads DSL, but I can't see how to make the consumer itself
> consume files and therefore create messages in a multi-threaded manner.
>
> One workaround may be to spawn a new process for each FTP user and have it
> consume from their home directory, but I would prefer to avoid this
> additional complexity and it would not gracefully handle a situation where
> one user uploads a large volume of files. One other option I can think of is
> to start multiple instances of my route somehow (to create multiple
> consumers), and then synchronise them with a shared repository for the
> inProgressRepository, but I'm not sure if that would actually work.
>
> Any input would be great - even if it is basic as I am new to Camel!
>
> Thanks,
> Tom
>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Parallel-processing-multiple-file-consumer-threads-with-readLock-changed-and-long-timeout-tp5767753.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Reply via email to