java.util.Scanner is good for splitting big files.
In fact I think that is what the .streaming() is for.

But returning an iterator should be fine as well. Can you show the error?
Maybe there is a bug we can fix.


On Thu, Apr 9, 2009 at 3:52 PM, javadevel <javadeve...@yahoo.com> wrote:
>
> Clause,
>
> This is what my route looks like
>
>               from("file:C:/work/esb/filetestpoller/")//large file
> exceeding 800M
>                .convertBodyTo(InputStream.class)
>                .splitter(customsplitter)//custom splitter(injected by spring) 
> that
> returns a java.util.Collection
>                .process(requestprocessor)
>                .to("jms:responseoutbox");
>
> I would prefer the custom splitter return java.util.Iterator instead of a
> Collection, the reason why I am returning a collection is because if I
> return an iterator I get an exception. The reason I am using a custom
> splitter is to return a data structure ( a collection)  that gets the data
> from a persistent store (much like the claim check pattern) instead of
> keeping the data in memory which will crash our system. Please let me know
> if there is a better way of dealing with this issue.
>
>
>
> Claus Ibsen-2 wrote:
>>
>> Hi
>>
>> Camel will convert whatever your expression returns to something that
>> it iterates.
>> For non streams it will walk the list before they are processed, so it
>> will know the total size.
>>
>> If you have a very large document you can use streaming to split it
>> on-the-fly.
>> However then the total size is not known.
>>
>>
>>
>> On Wed, Apr 8, 2009 at 10:50 PM, javadevel <javadeve...@yahoo.com> wrote:
>>>
>>> I need to use a splitter expression to split a very large document with
>>> rather complex splitting requirement. Based on the documentation provided
>>> on
>>> the Apache Camel Splitter, I can write a Bean or implement the Expression
>>> interface and return  java.util.Collection or java.util.Iterator.
>>> However,
>>> it only works with collections because the iterator interface does not
>>> provide a getSize method the Camel router can use to set the splittersize
>>> header. If my observation is correct, please modify the documentation to
>>> say
>>> it must only return a  java.util.Collection or modify the code so that it
>>> supports iterator too. If it supports iterator it will be extremely
>>> useful
>>> because we may not always know the splittersize especially when the data
>>> is
>>> huge and passed as an inputstream.
>>> --
>>> View this message in context:
>>> http://www.nabble.com/splitter-expression-tp22959250p22959250.html
>>> Sent from the Camel - Users (activemq) mailing list archive at
>>> Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>> Apache Camel Reference Card:
>> http://refcardz.dzone.com/refcardz/enterprise-integration
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/splitter-expression-tp22959250p22971404.html
> Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Apache Camel Reference Card:
http://refcardz.dzone.com/refcardz/enterprise-integration

Reply via email to