文件组件 (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&readLockTimeout=3
就我而言 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&readLockTimeout=3
就我而言 windows.
中的表现要好得多