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