1

Apache Camel File 组件在 Windows7 中无法正常运行,而在 Linux 中运行时没有任何问题。

我的要求:

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

多次尝试后,只有 Apache camel 可以从目录中删除文件。如果尝试未能从目录中删除文件,则它会引发异常。

如果我在目录中只有一个文件,它的工作没有任何问题,但如果我有多个文件,那么它会抛出一个异常。

应用环境:

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

阿帕奇骆驼版本:2.17.1

阿帕奇骆驼路线:

 <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||oaccfGenericFileOnCompletion|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:无法删除文件:在 org.apache.camel.component.file.strategy.GenericFileDeleteProcessStrategy.commit(GenericFileDeleteProcessStrategy.java:89) 在 org.apache.camel 的 GenericFile[C:\var\opt\irs\message\661.zip] .component.file.GenericFileOnCompletion.processStrategyCommit(GenericFileOnCompletion.java:127)

类似问题: Camel 2.15 文件锁Camel 2.14.2 不删除 Windows 上的文件删除移动文件

4

1 回答 1

1

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

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

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

如果有人有同样的问题,只需正确关闭文件 InputStream 或交叉检查您的代码并尝试用其他适当的替代解决方案替换它。

替代解决方案:

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

readLockCheckInterval=1&amp;readLockTimeout=3

就我而言,Windows 中的性能要好得多。

于 2017-11-21T07:50:42.673 回答