Apache camel Apache Camel GenericFileOperationFailedException:&x27;无法重命名文件';锁交换
我们有一个基于Camel v2.16.1的集成系统,它运行在Jboss v6 Linux平台上。有多个接口以不同的轮询速率同时运行 我们间歇性地遇到“无法重命名文件”问题,Camel无法备份到“已完成”文件夹,无法成功处理并从FTP源传输文件。重新启动camel应用程序修复了该问题 基本上,在quartz调度程序触发的固定时间间隔内,路由:Apache camel Apache Camel GenericFileOperationFailedException:&x27;无法重命名文件';锁交换,apache-camel,filelock,smooks,Apache Camel,Filelock,Smooks,我们有一个基于Camel v2.16.1的集成系统,它运行在Jboss v6 Linux平台上。有多个接口以不同的轮询速率同时运行 我们间歇性地遇到“无法重命名文件”问题,Camel无法备份到“已完成”文件夹,无法成功处理并从FTP源传输文件。重新启动camel应用程序修复了该问题 基本上,在quartz调度程序触发的固定时间间隔内,路由: 通过FTP从源文件中拾取文件 处理它们,smooks+xsl转换 通过FTP将生成的平面文件传递到端点 如果从源目录读取多个文件,则在处理之前,所有文件都会
/export
目录中读取文件dsciord.*.dat
inprogressRepository
将读取的文件名存储到本地数据库中(这样做是为了防止与第二个群集节点发生争用问题,但是,当前只有一个节点处于活动状态。此选项是不必要的,可以删除以加快进程)进行中的\u bpo/201609061522
目录,在该目录中根据日期时间戳创建子目录李>
进行中\u bpo/201609061522/done
子目录ConsumerTemplate
的单个实例来处理我们的接口inprogressRepository
org.milyn.templating.xslt.XslTemplateProcessor#绕过Smooks无法关闭底层输入流的
方法。最后,我能够重现/识别问题
考虑到我们正在使用相对路径将处理后的文件移动到目标服务器,一旦成功通过ftp发送到目标服务器:
../../../u/4gl\ u上传/仓库\集成\ u 2/trs服务器/导出/进行中\ u bpo/201609081030/完成
然而,由于某种原因,骆驼消费者没有通过正确的路径移动处理过的文件,而是从当前工作目录开始创建一个新的子目录树,这可能相当长,如下所示。因此问题就来了。它不知道它在哪里,也不会自行重置
/u/4gl\u上传/仓库集成\u 2/trs服务器/u/4gl\u上传/仓库集成\u 2/trs服务器/导出/进行中\u bpo/201609081030
这是通过选项stepwise=false复制的,这意味着它在一个步骤中而不是一步一步地遍历子目录
仍然不知道什么是最好的解决方案。我最终没有使用Camel的ConsumerTemplate。而是使用从远程ftp服务器读取文件的自定义方法来解决此问题。更快、可靠,并且允许指定绝对路径!嗯。。恐怕是使用窗户的问题。