在camel 2.22.1中我使用了如下camel路由来执行文件操作
from(sftp://" + sourceUrl + "&preferredAuthentications=password&includeExt=xml&delete=true&disconnect=true&maxMessagesPerPoll=50&preMove=${file:name.noext}.process")
这会将扩展名为 .xml 的文件重命名为 .process 并执行进一步的路由操作,最后从输入文件夹中删除 .process 文件。然而骆驼 3.9.0 这条路线开始失败。我从 Camel 文件组件中得到以下错误:
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot delete file: source/do-sfdc-case-import-0/2451165.process
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.jcraft.jsch.SftpException: No such file
at org.apache.camel.component.file.remote.SftpOperations.deleteFile(SftpOperations.java:488)
... 22 common frames omitted
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot change directory to: ..
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.jcraft.jsch.SftpException:
at org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:682)
... 11 common frames omitted
Caused by: java.io.IOException: Pipe closed
at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:337)
... 12 common frames omitted
为了解决这个问题,我尝试设置stepwise=false
标志,但是应用程序变得非常慢,即使此堆栈跟踪中提到的文件在文件夹中可用,但骆驼报告它找不到或无法更改到相应的目录。
知道我在这里做错了什么吗?感谢任何帮助/提示。