Hi,

maybe you can process this by using a bean. Then you can open the stream at the beginning and close it at the end. I try to show you what I mean:

FileWriterBean fwBean = new FileWriterBean();

public void configure() {
from("file://")
.bean(fwBean, "openFileForProcessing")
.split().tokenize("\n")
    // do your enrichment
    .bean(fwBean, "writeLine")
.end()
.bean(fwBean, "closeFile");
}

regards, Marco


Am 08.03.2013 12:23, schrieb Jean Francois LE BESCONT:
Thanks Willem for help.

My explaination are sometime to complicate, I will present it differently.

I have a "big" file to process efficiently, for that if I have tried :

Method 1 :
    from("file://C:/Temp/camel/input_test/?noop=true")
       .split()
          .tokenize("\n")
             // Business logic with possible reject and enrich
             .recipientList(
simple("stream:file?fileName=C:/Temp/camel/output_test/out.csv"))
             .end()
       .end()
    .end();

With this method, my process take 11 seconds but my file is not released
(windows file is locked in windows).

So I try with append :

Method 2 :

    from("file://C:/Temp/camel/input_test/?noop=true")
       .split()
          .tokenize("\n")
             // Business logic with possible reject and enrich

.to("file://?fileName=C:/Temp/camel/output_test/out.csv&fileExist=Append")
       .end()

    .end();

File is not locked after but it take 1,40 minutes ...

I finally try with the aggregate :

Method 3 :

    from("file://C:/Temp/camel/input_test/?noop=true")
       .split()
          .tokenize("\n")
             // Business logic with possible reject and enrich
             .aggregate(header(Exchange.FILE_NAME_ONLY), new
BodyInAggregatingStrategy())
                .completionTimeout(3000)
                .to("file://C:/Temp/camel/output_test/")
             .end()
       .end()
    .end();

As the example, but the process never finish, so I try to specify
completionSize(7500) and  completionTimeout(15000) but my output file
doesn't contains all my row ( only 1 %). I have not find an example of how
to use these parameters ...

Please, what should I do to have a process efficient and with no lock ?

Thanks

JF


Reply via email to