camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hebert Hu <hoo...@zju.edu.cn>
Subject Re: Issue in upload with Camel
Date Wed, 30 Dec 2009 05:40:41 GMT

Since I only need to check whether the upload is finished, I wrote
                from(fileUrl).onCompletion().to(ftpUrl).end()
am I writing the right syntax? Since it didn't work well
It seems that the in flight count way is more convenient, but I can't find
the function available neither in 2.0 or 2.1.Is it a new feature in 2.2?
BTW, the download link for 2.2 is not valid currently

Claus Ibsen-2 wrote:
> 
> On Tue, Dec 29, 2009 at 8:59 AM, Willem Jiang <willem.jiang@gmail.com>
> wrote:
>> If you are using file endpoint to pull the directory, it is hard to tell
>> if
>> the uploading processor is over,
>> Can you take look at the camel polling consumer API[1] (Timer based
>> polling
>> consumer example), in this way you can add you logic to check if the file
>> pulling is finished, and the sendTemplate will return when the  uploading
>> work is over.
>>
>> [1]http://camel.apache.org/polling-consumer.html
>>
> 
> 
> You can also use onCompletion or check the inflight registry if there
> are any current exchanges.
> http://camel.apache.org/oncompletion.html
> 
> CamelContext.getInflightRegistry()
> 
> Which has a counter for the number of exchanges in flight. When it
> reaches 0 the file should have been transferred.
> 
> 
> 
>> Willem
>>
>> Hebert Hu wrote:
>>>
>>> I started the upload like this
>>>
>>> CamelContext context = new DefaultCamelContext();
>>> RouteBuilder route = createRouteBuilder();
>>> context.addRoutes(route);
>>> context.start();
>>>
>>> I'm able to get the route service status by RouteDefinition definition =
>>> context.getRouteDefinitions().get(0);
>>> context.getRouteStatus(definition)
>>>
>>> But how can I tell whther the upload is finished?
>>> As I always get "Started" even the upload is finished.
>>>
>>>
>>> Hebert Hu wrote:
>>>>
>>>> Hi,
>>>> I've encountered a strange problem when using Camel Sftp component for
>>>> uploading.
>>>>
>>>> Here's my code
>>>>
>>>>    protected RouteBuilder createRouteBuilder() throws Exception {
>>>>        return new RouteBuilder() {
>>>>            public void configure() throws Exception {
>>>>                from("file:c:\\uploadfiles?noop=true").to(getFtpUrl());
>>>>                from(getFtpUrl()).to("mock:result");
>>>>            }
>>>>        };
>>>>    }
>>>>
>>>> private String getFtpUrl(){
>>>>        return
>>>>
>>>> "sftp://username@sftpserver/ftpload?password=password&binary=true&knownHostsFile=c://.ssh//known_hosts";
>>>>        }
>>>>
>>>> The problem is: When I start my upload procedure, for the files in the
>>>> c:\uploadfiles (multiples files), some of them will create a .camellock
>>>> file while others not. As in the remote server, some of the files that
>>>> have a .camellock copy will be uploaded while others not. Noted that
>>>> not
>>>> all the files that has .camellock copies will be uploaded. And an
>>>> exception is thrown
>>>> SEVERE: Cannot retrieve file: ftpload/a.txt
>>>> org.apache.camel.component.file.GenericFileOperationFailedException:
>>>> Cannot retrieve file: ftpload/a.txt
>>>>        at
>>>>
>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:326)
>>>>        at
>>>>
>>>> org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:312)
>>>>        at
>>>>
>>>> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:183)
>>>>        at
>>>>
>>>> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:120)
>>>>        at
>>>>
>>>> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:93)
>>>>        at
>>>>
>>>> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:99)
>>>>        at
>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:432)
>>>>        at
>>>>
>>>> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:295)
>>>>        at
>>>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>>>>        at
>>>>
>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:80)
>>>>        at
>>>>
>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:157)
>>>>        at
>>>>
>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:181)
>>>>        at
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>>        at
>>>>
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>>        at java.lang.Thread.run(Thread.java:799)
>>>> When I run the upload procedure again, more .camellock files appeared,
>>>> more files been uploaded, and the exception is still thrown.
>>>> For example. 10 files in c:\uploadfiles, run the upload for the first
>>>> time, 5 .camellock appeared, 1 file with .camellock uploaded, and an
>>>> exception. Run for the second time, 2 more .camellock appeared, 1 more
>>>> file uploaded, and an exception again.
>>>>
>>>> I'm using Camel-core 2.0.0, camel-ftp 2.0.0
>>>>
>>>> Can any one shed some light on me?
>>>>
>>>
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: http://old.nabble.com/Issue-in-upload-with-Camel-tp26940685p26964320.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message