Компонент верблюжьего файла: создайте файл и, если он уже существует, переместите его и переименуйте с меткой времени - PullRequest
0 голосов
/ 26 февраля 2019

Я использую Camel 2.17 и хотел бы создать файл.Если файл уже существует, я хочу переместить существующий файл в другую папку и добавить метку времени к перемещенному файлу.

Вот код, который я использую:

from("activemq:queue:MYQUEUE")
.toD("file:/opt/data/out?"
 + "fileName=toto.txt"
 + "&fileExist=Move"
 + "&moveExisting=issue/${date:now:yyyyMMdd_HHmmss_}${file:onlyname}");

ожидаетсяповедение :
Файл, созданный в: /opt/data/out/issue/20190226_162001_toto.txt

полученное поведение :
Файл, созданный в: /opt/data/out/issue/20190226_163226_\toto.txt
подкаталог 20190226_163226_ являетсясоздан.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Хорошо, это может быть небольшая проблема / ошибка с toD и файловым компонентом в этой ситуации.Однако вы должны не использовать toD в этом сценарии использования, поскольку файловый компонент уже поддерживает это с до .Поскольку опция moveExisting принимает простое выражение и имеет специальную поддержку для него.

Обновление: Хорошо, так что на самом деле все так, как задумано, потому что вы используете toD, тогда сначала оценивается конечная точка moveExisting, а затем, когда производитель файла читает это значение, его рассматривают какстатическое значение, которое по умолчанию автоматически принимает имя папки (именно так работают эти параметры) и, следовательно, создает его как папку вместо окончательного имени файла.

0 голосов
/ 27 февраля 2019

Вот решение моей проблемы:

просто замените .toD("file") на .to("file") Теперь все в порядке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...