That won't work the way you want. There are much better ways of doing this.
Specifically you can use a to("direct:xxx") to do some processing that is
abstracted out of the route. The other comment I have on your route is that
you seem to be heavy in writing processors for things that can be done in
the DSL. Think about the problem you are solving first with each processor.
If it is not unique to your domain or company, it is probably already
solved and you must go look for the solution not write one.
Try
from("file:/tmp/test?include=.*.csv")
.setProperty("outputFile",
simple(String.format("${header.%s}.tmp.${exchangeId}", Exchange.FILE_NAME)))
.split().tokenize("\n", 100)
.process(new RequestProcessor())
.to("direct:encrypt_file");
from("direct:encrypt_file")
.pgp(keyFileName, keyUserid)
.to("file:/tmp/test/output?fileName=" + outputFile + ".pgp");
Now I am coding without an IDE so please excuse any typos. It seems to me
you are using a file as sort of a temporary storage when instead, I would
just encrypt it right in the flow.
*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 Fri, Feb 28, 2014 at 12:45 AM, abkrt <[email protected]> wrote:
>
>
> Apache Camel Route:
>
> from("file:/tmp/test?include=.*.csv").process(new Processor() {
> public void process(Exchange exchange) throws Exception {
> // set output file name
> exchange.setProperty("outputFile",
> exchange.getIn().getHeader(Exchange.FILE_NAME, String.class) + ".tmp." +
> exchange.getExchangeId());
> }
> }).onCompletion().split().tokenize("\n", 100).process(new
> RequestProcessor()).to("direct:response").end().process(new Processor() {
> public void process(Exchange exchange) throws Exception {
> final String outputFile = exchange.getProperty("outputFile",
> String.class);
>
> // add new rout to encrypt
> CamelContext context = new DefaultCamelContext();
> context.addRoutes(new RouteBuilder() {
> public void configure() {
>
> from("file:/tmp/test/output?fileName=" +
> outputFile).marshal().pgp(keyFileName,
> keyUserid).to("file:/tmp/test/output?fileName=" + outputFile + ".pgp");
> }
> });
>
> context.start();
> Thread.sleep(5000);
> context.stop();
> }
> });
>
>
>
> from("direct:response").to("file:/tmp/test/output?fileName=${header.outputFile}&fileExist=Append");
>
> Above route is processing big file splitting into chunk (for batch
> processing) and generate output file with results. once generated the
> output
> file I need to encrypt. So I added NEW route inside a processor on
> onCompletion file split/process route. It works but I feel it is not a good
> design (since involve TWO context and need context shutdown explicitly).
>
> Can you anyone suggest me the proper way to fire the encryption route.
>
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Is-apache-camel-supports-nested-route-tp5748061.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>