0

我正在使用 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);
    } 
}

它有效,但我想知道这是否是处理上下文关闭的正确方法。

4

0 回答 0