Thanks Claus - those are both interesting ideas, I'll give it some more
thought!

Thanks,
Tom

Tom Duncalf / Software Developer
tomduncalf.com <http://www.tomduncalf.com> / @tomduncalf
<http://twitter.com/tomduncalf>


On 2 June 2015 at 10:04, Claus Ibsen-2 [via Camel] <
ml-node+s465427n5767782...@n5.nabble.com> wrote:

> Hi
>
> You could either try to implement your own read lock, or alternative
> try with a statefull file filter. Then in the filter you can return
> false for files that hasn't "waited long enough" and this allow to
> advance to the next file instead of blocking.
>
> Well in fact the read lock could also be stateful. And by stateful I
> mean you remember from previous time what was the last timestamp of
> the file, so you can figure out whether to pickup the file or not.
>
> We could consider adding support for stateful in the out of the box
> read lock but it would maybe require a few options to control the
> state cache so its size can be configured and so on.
>
>
> On Tue, Jun 2, 2015 at 10:55 AM, Tom Duncalf <[hidden email]
> <http:///user/SendEmail.jtp?type=node&node=5767782&i=0>> wrote:
>
> > Thanks Claus - unfortunately, there is a requirement to support existing
> > client workflows, which are usually not able to upload a "done" file
> > without additional development work on their end, and it seems that
> ProFTPD
> > is not able to do this automatically.
> >
> > Are you aware of any way to prevent the file consumer blocking while
> > waiting for the "changed" read lock or would another approach such as
> one
> > Camel process per user directory be the recommended approach in this
> case?
> >
> > Thanks,
> > Tom
> >
> > Tom Duncalf / Software Developer
> > tomduncalf.com <http://www.tomduncalf.com> / @tomduncalf
> > <http://twitter.com/tomduncalf>
> >
> >
> > On 2 June 2015 at 08:12, Claus Ibsen-2 [via Camel] <
> > [hidden email] <http:///user/SendEmail.jtp?type=node&node=5767782&i=1>>
> wrote:
> >
> >> 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 <[hidden email]
> >> <http:///user/SendEmail.jtp?type=node&node=5767770&i=0>> 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: [hidden email]
> >> <http:///user/SendEmail.jtp?type=node&node=5767770&i=1>
> >> Twitter: davsclaus
> >> Blog: http://davsclaus.com
> >> Author of Camel in Action: http://www.manning.com/ibsen
> >> hawtio: http://hawt.io/
> >> fabric8: http://fabric8.io/
> >>
> >>
> >> ------------------------------
> >>  If you reply to this email, your message will be added to the
> discussion
> >> below:
> >>
> >>
> http://camel.465427.n5.nabble.com/Parallel-processing-multiple-file-consumer-threads-with-readLock-changed-and-long-timeout-tp5767753p5767770.html
> >>  To unsubscribe from Parallel processing/multiple file consumer threads
> >> with readLock=changed and long timeout?, click here
> >> <
> >> .
> >> NAML
> >> <
> http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>
> >>
> >
> >
> >
> >
> > --
> > View this message in context:
> http://camel.465427.n5.nabble.com/Parallel-processing-multiple-file-consumer-threads-with-readLock-changed-and-long-timeout-tp5767753p5767781.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: [hidden email]
> <http:///user/SendEmail.jtp?type=node&node=5767782&i=2>
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://camel.465427.n5.nabble.com/Parallel-processing-multiple-file-consumer-threads-with-readLock-changed-and-long-timeout-tp5767753p5767782.html
>  To unsubscribe from Parallel processing/multiple file consumer threads
> with readLock=changed and long timeout?, click here
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5767753&code=dG9tQHRvbWR1bmNhbGYuY29tfDU3Njc3NTN8MTAzMzMyNTM2>
> .
> NAML
> <http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>




--
View this message in context: 
http://camel.465427.n5.nabble.com/Parallel-processing-multiple-file-consumer-threads-with-readLock-changed-and-long-timeout-tp5767753p5767785.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to