человек. У меня (надеюсь) простой вопрос для экспертов по Apache Camel. У меня есть следующий маршрут (это упрощенно, чтобы показать, где ошибка, маршрут работает нормально, за исключением ошибки, которую я объясняю)
from(ROUTE_URI)
.routeId(ROUTE_ID)
.choice()
.when(simple(FILE_EXISTS))
.log(LoggingLevel.INFO, INFO_MESSAGE_6)
.to(PROCESS_1_ZIP)
.to(PROCESS_2_ZIP)
.process(ex -> ex.getIn().setBody(ex.getIn().getHeaders().get(HEADER)))
.otherwise()
.log(LoggingLevel.INFO, FILE_DOES_NOT_EXIST)
.to(CHANGE_ZIP)
.to(PROCESS_2_ZIP)
.setHeader(HEADER, simple("true"))
.end()
.choice()
.when(simple(OPTION_6))
.process(this::translateToWhateverCommandWeWant)
.to(ROUTE_URI)
.process(ex -> ex.getIn().setBody(ex.getIn().getHeaders().get(HEADER)))
.end()
.to(UPDATE_FILE)
.choice()
.when(simple(OPTION_7))
.to(CREATE_ZIP)
.end()
.log(LoggingLevel.INFO, "Finished process with ID blabla");
Маршрут работает нормально с этим исключением: я проверил какое-то странное поведение (для меня я новичок ie в Camel), которого я не понимаю. UPDATE_FILE выполняется, даже если опция FILE_EXISTS еще не завершена. Поэтому иногда происходит сбой процесса, поскольку некоторые файлы, необходимые для работы этого процесса, недоступны, поскольку они созданы на шаге FILE_EXISTS . Это нормальное поведение для верблюда? Я думал, что Camel ждет выбора пути к fini sh, прежде чем продолжить выполнение. Я не использую несколько потоков или не выполняю шаг FILE_EXISTS в другом потоке. Заранее спасибо.