You need to look into an aggregator to combine different exchanges into one. One of the most valuable references you will find in the camel world is the EIP reference. http://camel.apache.org/enterprise-integration-patterns.html That page gives you a mapping as to how many, if not most, problems are solved in EIP. You should also try to let go of the old synchronous way of doing things and think in an asynchronous manner. That will get you further. For example, your route is watching a directory and splitting up a file. There are a lot of ways to pass that file reference around and add it into an exchange. You can enrich it, read it on a from line, pass around the raw data. Try to think from your goal what are the steps in a general fashion and then figure out which really have to be sequential and then move on from there. Even a file that is split up, encrypted and put back together doesn't have to be sequential so long as you keep track of the order of assembly.
*Robert Simmons Jr. MSc. - Lead Java Architect @ EA* *Author of: Hardcore Java (2003) and Maintainable Java (2012)* *LinkedIn: **http://www.linkedin.com/pub/robert-simmons/40/852/a39 <http://www.linkedin.com/pub/robert-simmons/40/852/a39>* On Mon, Mar 3, 2014 at 2:01 AM, abkrt <tharang...@gmail.com> wrote: > Thank you very Robert Simmons for you valuable reply. > > Still I have one issue, with above solution it will create multiple files > based on split size. How can I avoid this and encrypt into single file. For > that I had used "onCompletion" mechanism. > > I enhanced the initial design with your feedback. But the encryption route > is getting the original file as the input, are there any mechanism to > redirect the generated output file as the input for encryption. > > from("file:/home/rt40207/camel_test/gcb/request?include=.*.csv&noop=true") > .setProperty("outputFile", > simple("${header.CamelFileName}.${exchangeId}")) > .onCompletion() > .split().tokenize("\n", 5) > .log("splitted body processed & written to file > ${property.outputFile}.csv") > .process(new RequestProcessor()) > > > .to("file:/home/rt40207/camel_test/gcb/temp?fileName=${property.outputFile}.csv&fileExist=Append") > .end() > .marshal().pgp(keyFileName, keyUserid) > .log("PGP encrypted written to file > ${property.outputFile}.pgp") > > > .to("file:/home/rt40207/camel_test/gcb/response?fileName=${property.outputFile}.pgp"); > > > Note: > RequestProcessor: > public class RequestProcessor implements Processor { > public void process(Exchange exchange) throws Exception { > String body = exchange.getIn().getBody(String.class); > String[] split = body.split("\n"); > StringBuilder output = new StringBuilder(); > > // TODO begin trx > > for (String input : split) { > if (input.startsWith("InputHeader")) { > output.append("OutputHeader").append(input.substring(11) + > ","); > } else { > // TODO process here > output.append("\n").append(input).append(",DONE"); > } > } > > // TODO commit trx > > DefaultMessage message = new DefaultMessage(); > message.setBody(output.toString()); > message.setHeader(Exchange.FILE_NAME, "output" + > exchange.getIn().getHeader(Exchange.FILE_NAME, String.class).substring(5)); > > exchange.setOut(message); > } > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Is-apache-camel-supports-nested-route-tp5748061p5748229.html > Sent from the Camel - Users mailing list archive at Nabble.com. >