#apache-camel #graceful-shutdown
#апач-верблюд #изящное-выключение
Вопрос:
Я использую 2 независимых маршрута: один создает файлы в каталог, а другие потребляют файлы из того же каталога.
Маршрут 1 : .. .toD(PATH)
// Запишите файл в каталог ПУТИ
Маршрут 2 : from(PATH "?noop=trueamp;readLock=changedamp;readLockMinAge=30s")
//Использовать файл, созданный маршрутом 1
Я попробовал другой подход, чтобы отключить контекст верблюда в конце обработки. Для этого я использую планировщик, который выглядит следующим образом:
@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); } }
Это работает, но мне было интересно, был ли это правильный способ справиться с отключением контекста.