You may want to see a little about consumer template here
http://camel.apache.org/polling-consumer.html

Notice the the consumer template polls one message at a time.

If you want to "download all available files" you would need to run
the code in a while loop as the example on that link.

Though you can also add a new route at runtime with the from uri
computed. And then stop and remove the route if not longer needed.


On Tue, Apr 2, 2013 at 9:36 PM, Chris Wolf <cwolf.a...@gmail.com> wrote:
> May I have the ticket #?  (so I can watch/follow)
>
> When you say, "use a java bean" - what do you mean?
>
> Instantiate the FTP component like?
>
>                         FtpComponent comp = new FtpComponent(context);
>                         @SuppressWarnings("unchecked")
>                         FtpEndpoint<FTPFile> endpt = (FtpEndpoint<FTPFile>)
>
> comp.createEndpoint("ftp://localhost/download?localWorkDirectory=/tmp/local/data&noop=true&username=fred&password=secret";);
>                         final FtpConsumer cons = (FtpConsumer)
>                         endpt.createConsumer(new Processor() {
>                             @Override
>                             public void process(Exchange exchange)
> throws Exception {
>                                 System.out.printf("%s\n",
> exchange.toString());
>                             }
>                         });
>                         cons.setStartScheduler(true);
>                         comp.start();
>                         endpt.start();
>                         cons.start();
>
> On Tue, Apr 2, 2013 at 11:03 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>> Hi
>>
>> There is a ticket scheduled for Camel 3.0 to allow enrich and
>> pollEnrich to support "dynamic uris" like the recipient list can do.
>>
>> Though implementing this requires an API change and thus scheduled for 3.0.
>>
>> You can always use a java bean to consume from an dynamic computed
>> endpoint. For example using consumer template etc.
>>
>> For ftp endpoints you may want to set disconnect=true, to avoid having
>> the connection running for a longer period.
>>
>>
>>
>>
>> On Sun, Mar 31, 2013 at 10:08 PM, Chris Wolf <cwolf.a...@gmail.com> wrote:
>>> Claus,
>>>
>>> You addressed the issue of "dynamic URIs for Consumers" back in July-2009:
>>>
>>> http://camel.465427.n5.nabble.com/Dynamic-consumers-with-Camel-td476433.html
>>>
>>> However, all those use-cases, except for maybe #4, web console, which
>>> I can't run all are about
>>> calculating the URI *before* the context is started.  What I'm looking
>>> for is a way to create and insert
>>> or update a polling consumer's URI - at runtime - *after* the context
>>> is started.
>>>
>>> For example:
>>>
>>>                  from("direct:start")
>>>                 .beanRef("config")
>>>                 .convertBodyTo(Document.class)
>>>                 .setHeader("Ftp_URI").xquery(
>>>                     "concat('ftp://'" +...some more xpaths into the
>>> inbound config doc...), String.class)
>>>                  .pollEnrich(/* whoops! this is referenced at route
>>> setup time, not route runtime... - it won't work */)
>>>                  .to("log:...");
>>>
>>> So the question, more generally, is is it possible to alter the route
>>> definition - at runtime? i.e. after the route/context are started?
>>>
>>> You sorted of hinted at this in that July-2009 posting when you said:
>>>
>>> "2) You can always stop, modify and start a route in Camel at runtime."
>>>
>>> I don't see how that would work since I would likely be attempting to
>>> modify the route at runtime
>>> from a bean method in the route - or are you suggesting one route
>>> stops/modifies another route?
>>>
>>> So the way I see it is - I would create the ftp route with a bogus URI
>>> and option "&startScheduler=false",
>>> on the ftp endpoint, or autoStart=false on the route.  Then in
>>> *another* route - the "configurer" route,
>>> I guess, access the ftp route and reconfigure the endpoint with the
>>> real settings, then start it's poll scheduler (or start it's route).
>>>
>>> Something like that?  Any easier, more direct way?
>>>
>>> Thanks,
>>>
>>>
>>> Chris
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Email: cib...@redhat.com
>> Web: http://fusesource.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cib...@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to