Hi

I have created a ticket about the NIO thingy
https://issues.apache.org/activemq/browse/CAMEL-2234


On Fri, Nov 27, 2009 at 2:14 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> On Fri, Nov 27, 2009 at 2:00 PM, shirazi <m...@farhad.eu> wrote:
>>
>> Sure. I have attached the file.
>> Actually I use from->to components for transfering files and I guess it
>> copies the file, rather than moving.
>>
>
> Ah makes more sense for copying to leverage NIO.
>
> Camel does this also but I can see that it may hit that 2gb limit as
> it doesnt transfer in a loop using a lower buffer.
>
> It was doing it in a one liner
>            in.transferTo(0, in.size(), out);
>
> I wonder if you really must do that in a loop to avoid any 2gb limit
> or the likes?
>
>
>> Thanks,
>> Farhad S.
>> http://old.nabble.com/file/p26542125/Nio.java Nio.java
>>
>>
>> Claus Ibsen-2 wrote:
>>>
>>> On Fri, Nov 27, 2009 at 1:37 PM, shirazi <m...@farhad.eu> wrote:
>>>>
>>>> Wau... thanks for that. I don't understand how I could miss it, cause i
>>>> searched a lot for such a feature.
>>>>
>>>> Another thing that I have experienced in 2.0, is that the "file"
>>>> component
>>>> is unable to move/copy files larger than 2Gigs, such large files are cut
>>>> around 2 Gigs limit. Now, I'm not sure if it has anything to do with the
>>>> OS
>>>> or the filesystems or what. I have seen it both in Linux (debian) and Mac
>>>> OS
>>>> X. And I don't understand either, why the file component does not use the
>>>> NIO api or at least we don't have an option to tell it use the NIO api
>>>> instead.
>>>> Anyway, for now I've solved the problem by using a smiple component
>>>> instead
>>>> of the "file" comp. to move/copy files using the NIO api. It is much
>>>> faster
>>>> and it has no problem with very large files.
>>>>
>>>
>>> For move it uses java.io.File rename and are you saying its not
>>> optimized for the underlying OS?
>>> I would assume that it could move a 2gb file in no time if the file is
>>> on the same share.
>>>
>>> Can you share your code that you are using?
>>>
>>>
>>>> Bests,
>>>> Farhad S.
>>>>
>>>>
>>>> Claus Ibsen-2 wrote:
>>>>>
>>>>> On Fri, Nov 27, 2009 at 1:12 PM, shirazi <m...@farhad.eu> wrote:
>>>>>>
>>>>>> Hi,
>>>>>> Ok, I guess I should rather provide an AggregationStrategy.
>>>>>> The reason why I use a timer is that when I use the ftp endpoint, it
>>>>>> starts
>>>>>> to fetch everything that is on the ftp in the first call and that's not
>>>>>> what
>>>>>> i want, because I'm processing files over 3 Gigs and there are many of
>>>>>> them.
>>>>>> Then I figured that by using a timer, i could have ftp to download one
>>>>>> file
>>>>>> at a time!!
>>>>>> What I basically need is to somehow tell the ftp, how many files I want
>>>>>> to
>>>>>> fetch at a time. This is probably doable now in camel-2.1 by using the
>>>>>> "ThrottlingInflightRoutePolicy", which i havn't tried yet.
>>>>>> Do you have any suggestions?
>>>>>
>>>>> Yeah the FTP component extends the File component so you got all the
>>>>> options from the file component as well
>>>>> http://camel.apache.org/file2.html
>>>>>
>>>>> And there is a maxMessagesPerPoll you can use to tell how many files
>>>>> you want at most to poll. For example = 1 in your use.
>>>>>
>>>>> And that option is avail in 2.0 also.
>>>>>
>>>>> In fact all these are as they are batch polling consumers
>>>>> http://camel.apache.org/batch-consumer.html
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Bests,
>>>>>> Farhad S.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Claus Ibsen-2 wrote:
>>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> BTW why are you using a timer -> ftp when the ftp have a build in
>>>>>>> timer?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Nov 27, 2009 at 12:55 PM, shirazi <m...@farhad.eu> wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>> Please consider the following route:
>>>>>>>>
>>>>>>>> from("timer://someTrigger?delay=30000&fixedRate=true&period=300000").
>>>>>>>> pollEnrich("ftp://cmoreFtp?binary=true&localWorkDirectory=/tmp&idempotent=true&idempotentRepository=#caStreams";,
>>>>>>>> 10000).
>>>>>>>> to("file:///tmp/vw/cmore?tempPrefix=.inprogress");
>>>>>>>>
>>>>>>>> The pollEnrich cast a NullPointerException in camel-2.0, if there is
>>>>>>>> nothing
>>>>>>>> to fetch from the ftp. I got rid of the exception by a
>>>>>>>> "try-catch(NullpointerExcpetion.class).stop()" around the route. Now
>>>>>>>> in
>>>>>>>> camel-2.1-SNAPSHOT, I get the following exception on the "to"
>>>>>>>> endpoint:
>>>>>>>> =================
>>>>>>>> 12:37:06,899 INFO  [Tracer] >>>  -->
>>>>>>>> file:///tmp/vw/cmore?tempPrefix=.inprogress_, Pattern:InOnly,
>>>>>>>> Headers:{firedTime=Fri Nov 27 12:36:56 CET 2009},
>>>>>>>> Exception:org.apache.camel.component.file.GenericFileOperationFailedException:
>>>>>>>> Cannot store file:
>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075
>>>>>>>> 12:37:06,899 INFO  [Tracer] >>>  -->
>>>>>>>> file:///tmp/vw/cmore?tempPrefix=.inprogress_, Pattern:InOnly,
>>>>>>>> Headers:{firedTime=Fri Nov 27 12:36:56 CET 2009},
>>>>>>>> Exception:org.apache.camel.component.file.GenericFileOperationFailedException:
>>>>>>>> Cannot store file:
>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075
>>>>>>>> 12:37:06,899 ERROR [TimerConsumer] Cannot store file:
>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075
>>>>>>>> org.apache.camel.component.file.GenericFileOperationFailedException:
>>>>>>>> Cannot
>>>>>>>> store file:
>>>>>>>> /tmp/vw/cmore/.inprogress_02216f38-8ffc-4aec-b638-27229d857075
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:204)
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:184)
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:126)
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:57)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:97)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.SendProcessor$1.doInProducer(SendProcessor.java:95)
>>>>>>>>        at
>>>>>>>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:146)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.SendProcessor.doProcess(SendProcessor.java:94)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:82)
>>>>>>>>        at
>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:162)
>>>>>>>>        at
>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.TryProcessor.process(TryProcessor.java:63)
>>>>>>>>        at
>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DelegateProcessor.processNext(DelegateProcessor.java:53)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DelegateProcessor.proceed(DelegateProcessor.java:82)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:162)
>>>>>>>>        at
>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:206)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54)
>>>>>>>>        at
>>>>>>>> org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
>>>>>>>>        at
>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:67)
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:103)
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:50)
>>>>>>>>        at java.util.TimerThread.mainLoop(Timer.java:512)
>>>>>>>>        at java.util.TimerThread.run(Timer.java:462)
>>>>>>>> Caused by: org.apache.camel.InvalidPayloadException: No body
>>>>>>>> available
>>>>>>>> of
>>>>>>>> type: java.io.InputStream on: Message: [Body is null]. Caused by: No
>>>>>>>> type
>>>>>>>> converter available to convert from type: null to the required type:
>>>>>>>> java.io.InputStream with value null on the exchange:
>>>>>>>> Exchange[Message:
>>>>>>>> [Body
>>>>>>>> is null]]
>>>>>>>>        at
>>>>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:103)
>>>>>>>>        at
>>>>>>>> org.apache.camel.util.ExchangeHelper.getMandatoryInBody(ExchangeHelper.java:116)
>>>>>>>>        at
>>>>>>>> org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:198)
>>>>>>>>        ... 29 more
>>>>>>>> Caused by: org.apache.camel.NoTypeConversionAvailableException: No
>>>>>>>> type
>>>>>>>> converter available to convert from type: null to the required type:
>>>>>>>> java.io.InputStream with value null
>>>>>>>>        at
>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.mandatoryConvertTo(DefaultTypeConverter.java:126)
>>>>>>>>        at
>>>>>>>> org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:101)
>>>>>>>>        ... 31 more
>>>>>>>> ============
>>>>>>>> Now, I can remedy the situation by a try-catch block or an
>>>>>>>> interceptor,
>>>>>>>> but
>>>>>>>> in my opinion this should be considered a bug in camel and it should
>>>>>>>> silently ignore if there was nothing to fetch from the ftp.
>>>>>>>>
>>>>>>>> Bests,
>>>>>>>> Farhad Shiraz
>>>>>>>>
>>>>>>>> --
>>>>>>>> View this message in context:
>>>>>>>> http://old.nabble.com/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541447.html
>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541650.html
>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 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/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26541877.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> 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/camel-casts-exception-when-there-is-nothing-to-fetch-from-the-ftp-endpoint-tp26541447p26542125.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>
>
>
> --
> 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
>



-- 
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

Reply via email to