Apache的骆驼路线:Apache Camel是否支持嵌套路由?
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");
以上航线正在处理大文件分割成块(批处理)并产生结果的输出文件。一旦生成我需要加密的输出文件。所以我在onCompletion文件拆分/进程路由的处理器中添加了NEW路由。它的工作原理,但我觉得这不是一个好的设计(因为涉及到TWO上下文,并且需要显式地关闭上下文)。
你可以任何人建议我解雇加密路线的正确方法。
太谢谢你了彼得。伟大的帮助... – user3332279
我仍然有一个问题,与上述解决方案,它会创建基于拆分大小的多个文件。我怎样才能避免这一点,并加密成单个文件。 – user3332279
@ user3332279我更新了答案 –