我正在使用 2 个独立的路由:一个正在将文件生成到一个目录中,另一个正在使用同一目录中的文件。
Route1 : ..
.toD(PATH)
// 将文件写入 PATH DIR
Route 2 :
from(PATH + "?noop=true&readLock=changed&readLockMinAge=30s")
// 使用路由 1 生成的文件
我尝试了不同的方法在处理结束时关闭 Camel 上下文。为此,我正在使用如下所示的调度程序:
@EnableScheduling
@Component
public class ShutdownProcessor implements Processor {
private Exchange exchange;
@Override
public void process(Exchange exchange) throws Exception {
this.exchange = exchange;
}
@Scheduled(fixedDelayString = "${batch.fixeddelay.ms}")
private void shutdown() {
if(exchange == null) {
log.info("Exchange not created yet");
return;
}
int inflightCount = exchange.getContext().getInflightRepository().size();
if(inflightCount == 0) {
this.exchange.getContext().stop();
this.exchange.getContext().shutdown();
System.exit(0);
}
}
它有效,但我想知道这是否是处理上下文关闭的正确方法。