Процесс должен вывести один и только один файл, если что-то пойдет не так, это может привести к нулю или нескольким файлам в выходном каталоге.
Я хочу забрать файлы и переместить ихв каталог A, если был один файл, и в каталог B, если найдено больше файлов.(И отправьте письмо какому-нибудь администратору).
// fileCounter and FileNameFilter use same utility class for filtering!
from(config.getFrom())
.to("bean:bean:fileCounter?method=fileCountInHeader(*)")
.choice()
.when(simple("${header.NumberOfFiles} == 0"))
.to("bean:grootboekMutatiesMailHandler?method=createMailNoFile(*)")
.when(simple("${header.NumberOfFiles} == 1"))
.filter().method(new FileNameFilter(), getFilterBy())
.to(config.getA()))
.to("bean:grootboekMutatiesMailHandler?method=createMailSuccess(*,${header.FileNamesList})")
.when(simple("${header.NumberOfFiles} > 1"))
.filter().method(new FileNameFilter(), getFilterBy())
.to(config.getB())
.to("bean:grootboekMutatiesMailHandler?method=createMailManyFiles(*,${header.FileNamesList})").endChoice().end();
Если маршрут верблюда начинается с файла, подсчет количества файлов будет выполняться для каждого файла по очереди, поэтому последний файл всегда будет передаватьсякаталог A.
Что мне действительно нужно, так это перечислить файлы в начале маршрута, сосчитать их, а затем только передать эти файлы в соответствующий каталог.Если файл добавлен, им следует пренебречь, если файл удален, выдается ошибка.