当前位置: 首页 > 知识库问答 >
问题:

File component(Apache camel)delete=true参数在windows中不工作

彭骏
2023-03-14

Apache Camel File组件在Windows7中无法正常工作,因为它在Linux工作没有任何问题。

我的要求:

文件处理后,必须从目录中删除文件。在Windows中,因为。camelLock文件没有正确删除。

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

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

应用环境:

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

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|默认|WARN
|yes||o. a. c. c. f. GenericFileOnComplection|file.analysis.input|提交时出错。Exchange[ID-51741-1510678404569-9-22]。由以下原因引起:[org.apache.camel.component.file.GenericFileSwitationFailedException-无法删除文件:GenericFile[C:\var\opt\irs\消息\661.zip]]org.apache.camel.component.file.GenericFileSwitationFailedException:无法删除文件:GenericFile[C:\var\opt\irs\消息\661.zip]在org.apache.camel.component.file.strategy.GenericFileDeleteProcessStrategy.commit(GenericFileDeleteProcessStrategy.java:89)在org.apache.camel.component.file.GenericFileOnCompletion.process策略提交(GenericFileOnCompletion.java:127)

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

共有1个答案

东方和煦
2023-03-14

在这种情况下,我忘记关闭文件输入流。这就是为什么我在Windows中遇到问题。

我对Filecomponent不必要地使用了InputStream。我删除了它,一切正常。

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

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

替代解决方案:

在这种情况下,如果您无法在代码中找到开放流,那么将以下参数应用于Apache camel route。性能会更好。

readLockCheckInterval=1&amp;readLockTimeout=3

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

 类似资料:
  • 问题内容: 我正在为CodeIgniter开发我的REST客户端库,并且正在努力研究如何在PHP中发送PUT和DELETE参数。 在一些地方,我看到人们在使用这些选项: 令人讨厌的是,这似乎无济于事。这是设置PUT参数的正确方法吗? 如果是这样,如何设置DELETE参数? $ this- > option()是我的库的一部分,它只是建立一个CURLOPT_XX常量数组,并在执行建立的cURL请求时

  • Apache Camel:2.12.2,activemq:5.7 我们注意到,在下面的路由中,对于前100次交换,节流工作正常。此后,它不是每秒发送100次交换,而是每秒仅发送1次交换。现在,如果我们将timePeriodMillis设置为100,它似乎可以正常工作。注意,我们同时发送500个交换。

  • 我使用selenium和进行测试。在Windows server 2012上运行我的代码时,任务管理器显示进程正在运行,但在60秒后。 谁能告诉我,问题出在哪里,因为运行过程是他们在任务栏中的程序执行开始。

  • 我从基于apache-camel-spark的rest接口获得一个json数组作为输入。开始时,我想通过apache camels路线分割json-array来处理每个元素。我该怎么做? 我的测试输入json: 对于这个问题,我在stackoverflow上找到了一些间接描述的问题: link 1, link 2, link 3。 根据这些示例,我尝试了以下骆驼路线: 当我这样做时,我总是得到以下

  • 我想让用户节点中的userName属性作为唯一。我使用了下面的代码,但它没有在Neo4j数据库中创建唯一的约束。 仅供参考,我使用的是Neo4j服务器版本:3.3。6(社区)带Spring靴2 但是如果我自己在Neo4j浏览器中创建一个约束,它就会工作。 有没有一种方法可以强制Spring Data Neo4J创建唯一的属性,而不需要自己在数据库中创建它们?

  • 我遵照这些指示: Windows全局安装PHAR的过程与在Windows上手动安装Composer的过程相同: 为PHP二进制文件创建目录;例如,C:\bin 追加;C:\bin到您的PATH环境变量(相关帮助) 下载https://phar.phpunit.de/phpunit-6.2.phar 并将文件另存为C:\bin\phpunit。法尔 打开命令行(例如,按Windows R»键入cmd