Файловый компонент (Apache camel) delete = true параметр не работает в windows

Компонент Apache Camel File не работает должным образом в Windows7, тогда как в Linux он работает без проблем.

Мое требование:

После обработки файла файлы необходимо удалить из Каталога. В Windows из-за .camelLock файлы не удаляются должным образом.

После нескольких попыток только верблюд Apache может удалить файл из каталога. Если попытка удалить файл из Каталога не удалась, возникает исключение.

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

Среда приложения:

Я развернул приложение Apache camel на сервере Tomcat.

Версия Apache Camel: 2.17.1

Apache Camel Route:

 <from uri="file:///var/opt/irs/message?delete=true" />
 <to uri="direct:file.storage.original" />

В Windows я получаю следующую ошибку:

введите описание изображения здесь

1 | 2017-11-14 17: 56: 34,828 | 11-01-41 | default | WARN
| yes || o.a.c.c.f.GenericFileOnCompletion | file.analysis.input | Ошибка во время фиксации. Обмен [ID-51741-1510678404569-9-22]. Вызвано: [org.apache.camel.component.file.GenericFileOperationFailedException - Невозможно удалить файл: GenericFile [C: \ var \ opt \ irs \ message \ 661.zip]] org.apache.camel.component.file.GenericFileOperationFailedException: Невозможно удалить файл: GenericFile [C: \ var \ opt \ irs \ message \ 661.zip] на org.apache.camel.component.file.strategy.GenericFileDeleteProcessStrategy.commit (GenericFileDeleteProcessStrategy.java:89) на org.apache.camel .component.file.GenericFileOnCompletion.processStrategyCommit (GenericFileOnCompletion.java:127)

Подобные проблемы: Camel 2.15 блокирует файлы, Camel 2.14.2 не удаляет файлы в Windows, удаление перемещаемых файлов


person Narayan Yerrabachu    schedule 14.11.2017    source источник
comment
Есть другой процесс, который блокирует этот файл в Windows, поэтому Camel (например, Java JVM) не может удалить файл. Так что посмотрите на свой ящик Windows, что может блокировать файлы. Или вы делаете что-то в этом прямом маршруте (который мы не видим), когда вы забываете закрыть ввод какого-либо файла или что-то еще, чтобы файл был заблокирован. Так что дважды проверьте свой код.   -  person Claus Ibsen    schedule 15.11.2017
comment
Я столкнулся с этой проблемой только с файловым компонентом. Я пробовал использовать FTP в Windows, он работает нормально.   -  person Narayan Yerrabachu    schedule 15.11.2017
comment
Вы распаковываете файлы? Открытие Zip в любом случае приведет к блокировке zip-файла.   -  person Namphibian    schedule 16.11.2017


Ответы (1)


В этом случае я забыл закрыть поток ввода файлов. вот почему у меня возникла проблема в Windows.

Я без надобности использую InputStream для Filecomponent. Убрал, все рабочий файл.

InputStream input = CamelContextHelper.convertTo(context, InputStream.class, body);

Если у кого-то такая же проблема, просто закройте файл InputStream должным образом или перепроверьте свой код и попробуйте заменить его другим подходящим альтернативным решением.

Альтернативное решение:

В случае, если вы не можете найти открытые потоки в своем коде, примените указанные ниже параметры к маршруту верблюда Apache. Спектакль был бы лучше.

readLockCheckInterval=1&amp;readLockTimeout=3

В моем случае производительность в окнах намного лучше.

person Narayan Yerrabachu    schedule 21.11.2017