Hello, Here is my question :
I have a route that polls a directory and sends the files found to a ZipService 4 by 4 (the created zip have to contain all the files needed by another program, like : data1.shx, data1.shp, data1.dbf, data1.prj then data2.shx, data2.shp...). So here is my route : from("file://shp/?noop=true") // Group all files for zipping (expecting 4 files: .shp, .shx, .prj, .dbf) .aggregate(simple("${file:onlyname.noext}"), new ZipfileAggregationStrategy()) .completionSize(4) .log("Zipping") .setHeader("zipDestinationFolder", constant("/destination")) .to("bean:my.ZipService?method=zipFile") .log("Zipped : ${file:onlyname.noext}"); But because the considered files a very large (some Mo each), I cannot keep them in memory as aggregated messages body. So my aggregation strategy only return a list of files' paths : public Exchange aggregate(Exchange oldEx, Exchange newEx) { if (oldEx == null) { return newEx; } else { Object oldIn = oldEx.getIn().getBody(); ArrayList list = null; if(oldIn instanceof GenericFile) { list = new ArrayList(); list.add(((GenericFile<File>) oldIn).getAbsoluteFilePath()); } else if(oldIn instanceof ArrayList) { list = (ArrayList) oldIn; } list.add(newEx.getIn().getBody(GenericFile.class).getAbsoluteFilePath()); newEx.getIn().setBody(list); return newEx; } } These paths are then sent to my ZipService that does the final work. But when it wants to get a file to read it and zip it, an IOException is thrown as the file does not exist anymore : it has been consumed by Camel. So to avoid this problem, I have to set a "noop=true" param and then delete manually the files. Is this the expected behavior (aggregation consumes files) or do I do something wrong? Thank you in advance. ----- http://developpef.blogspot.com -- View this message in context: http://camel.465427.n5.nabble.com/Aggregator-consumes-messages-tp5160898p5160898.html Sent from the Camel - Users mailing list archive at Nabble.com.