文件组件 (Apache camel) delete=true 参数在 windows 中不起作用

File component(Apache camel) delete=true parameter not working in windows

Apache Camel 文件组件在 Windows7 中无法正常工作,而在 Linux 中正常工作时没有任何问题。

我的要求:

文件处理后,必须从目录中删除文件。在 Windows 中,由于 .camelLock,文件未正确删除。

经过多次尝试,只有 Apache camel 可以从目录中删除文件。如果尝试从目录中删除文件失败,则会抛出异常。

如果目录中只有一个文件,它可以正常工作,但如果我有多个文件,则会抛出异常。

应用环境:

我在 Tomcat 服务器中部署了 Apache camel 应用程序。

Apache Camel 版本:2.17.1

Apache 骆驼路线:

 <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|Error during commit. Exchange[ID-51741-1510678404569-9-22]. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - Cannot delete file: GenericFile[C:\var\opt\irs\message1.zip]] org.apache.camel.component.file.GenericFileOperationFailedException: Cannot delete file: GenericFile[C:\var\opt\irs\message1.zip] at org.apache.camel.component.file.strategy.GenericFileDeleteProcessStrategy.commit(GenericFileDeleteProcessStrategy.java:89) at org.apache.camel.component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:127)

类似问题: Camel 2.15 file locks , Camel 2.14.2 not deleting files on Windows ,deleting moving files

在这种情况下,我忘记关闭文件输入流。所以这就是我在 Windows 中遇到问题的原因。

我不必要地为文件组件使用 InputStream。我删除了它,所有工作文件。

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

如果有人遇到同样的问题,请正确关闭文件 InputStream 或交叉检查您的代码并尝试将其替换为其他合适的替代解决方案。

备选方案:

如果您无法在代码中找到打开的流,请将以下参数应用于 Apache camel 路由。性能会更好。

readLockCheckInterval=1&amp;readLockTimeout=3

就我而言 windows.

中的表现要好得多