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我更新了答案 –