Hello,

I need to poll and read text files from a given directory. Each file holds a
large but variable number of "Item" instances (+100K) possibly encoded on a
multiple lines (exact number not known in advance).

(1)
My first approach was to use a custom Splitter that would take the File in
input and return an Iterator<Item> to enable streaming of the result (and
therefore avoid having the entire unmarshalled file content into memory).
The route looks as follows:

   from("file:incoming")
      .split(new MyFileItemReaderFactory(), "read")
      .streaming()
      .to("activemq:items")

Although it (seems to) work(s), I don't feel comfortable with this approach
because "MyFileItemReaderFactory" actually serves two distinct purposes:
- unmarshall Item instances from their text representation 
- split the original file into individual items

What do you think ?


(2)
I was wondering if a better approach would be something like:

   from("file:incoming")
      .convertBodyTo(Iterator<Item)
      .to("activemq:items")

Would it be better from a "Camel point of view" ?
How is streaming handled in this case ?
Is there any better way of handling this case ?




--
View this message in context: 
http://camel.465427.n5.nabble.com/Read-and-process-very-large-files-tp5742889.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to