Hy,
Насколько я понимаю, вы пытаетесь переместить файл за один раз.
Это не совсем так, как работает верблюд.
Идея верблюда состоит в том, чтобы иметь «потребителя» и «производителя», где потребитель загружает данные (например, ваш файл), а производитель помещает данные куда-то (например, сохраняет файл в папку)
Как говорится, вот что сработало для меня с Java-маршрутом:
from("file:/home/chris/temp/camel/in")
.to("file:/home/chris/temp/camel/out/?fileName=test.txt");
Часть from
настраивает папку, в которой верблюд ищет новые файлы. Несколько замечаний по этому поводу:
- Файловый компонент проверяет папку каждые 0,5 секунды на наличие новых файлов. Это можно изменить с помощью параметра
delay
- Параметр
noop
настраивает, перемещается или копируется ли файл. По умолчанию он установлен на false
, что означает, что он перемещен
В части to
вы настраиваете, куда файл должен быть перемещен. Здесь вы можете использовать параметр fileName
для переименования файла.
Будьте осторожны с этим, потому что установка параметра в URI напрямую делает его «статическим».
Под этим я подразумеваю, что единственный способ изменить параметр - это полностью перенастроить маршрут или перезапустить его, где ни один из них не является тем, что вы хотели бы сделать в обычном режиме.
Примечание 1:
Перемещение всех файлов, помещенных в одну папку, в один и тот же файл всегда переопределяет предыдущий файл по умолчанию.
Например, вы можете использовать параметр fileExists
, чтобы всегда просто добавлять содержимое файла: fileExists=Append
(подробности см. Верблюжий файл document )
Примечание 2:
В компоненте file есть опция не "перемещать" файл, а копировать, переименовывать и удалять его, что иногда необходимо, когда вы хотите переместить его на другой диск, а простая копия не работает.
Также см. Документ для компонента верблюжьего файла для подробностей об этом.
Примечание 3:
Вы можете иметь несколько операторов to()
на одном маршруте, чтобы файл был перемещен в несколько мест. Например:
from("file:/home/chris/temp/camel/in")
.to("file:/home/chris/temp/camel/out/?fileName=test.txt")
.to("smtp:....");
Надеюсь, я смогу вам помочь и ответить на ваш вопрос.
Поздравил
Крис