Apache Camel SFTP 消费者在阅读后不删除文件
Apache Camel SFTP Consumer not deleting file after reading
我发现 Apache Camel SFTP 有一个奇怪的行为。即使设置了 delete=true
属性,它也不会在接收后删除文件。我正在使用 3.0.0-M3
版本的 camel-ftp
以下是我的 SFTP 配置,
sftp://<<HOST_NAME>>:<<PORT>>/<<PATH>>?username=<<USERNAME>>" +
"&password=<<PASSWORD>>" +
"&preferredAuthentications=password" +
"&readLock=changed" +
"&readLockMinAge=30000" +
"&delay=20000" +
"&delete=true";
现在Camel可以读取文件了,但是读取后并没有删除文件。在浏览文档时,它说
delete (consumer) -
If true, the file will be deleted after it is processed successfully.
- camel 如何定义是否处理成功?我们是否需要为 Camel 设置任何交换 属性 以标记它已成功处理?
收到文件后,我所做的就是将其传递到另一条路线,如下所示,
from(endpointUri).to("direct:procesSftpFile");
我应该将它从 direct
更改为 vm
还是 seda
?
看起来没有人遇到过这个问题,我不知何故弄清楚了它是从哪里开始发生的。
问题不是因为 Camel sftp 组件,而是我调用的那段代码。
我流程的第二部分如下所示,
from("direct:procesSftpFile")
.log("...")
// logging and other regular processing
....
// sending to vm InOnly
.to("vm:queue1?exchangePattern=InOnly")
.. some more processing..
.to("vm:queue2?exchangePattern=InOnly")
所以问题在于在上面的代码片段中调用那些 queue1 和 queue2。
评论它们,修复它,sftp 开始删除文件。为了调用 VM,我使用 producerTemplate.asyncSend
而不是 to()
作为解决方法。
我仍然感到困惑的一件事是,如果我们使用 InOnly 交换模式,那么为什么它会影响 sftp 行为?也许我应该在一个单独的问题中问这个问题。
我发现 Apache Camel SFTP 有一个奇怪的行为。即使设置了 delete=true
属性,它也不会在接收后删除文件。我正在使用 3.0.0-M3
版本的 camel-ftp
以下是我的 SFTP 配置,
sftp://<<HOST_NAME>>:<<PORT>>/<<PATH>>?username=<<USERNAME>>" +
"&password=<<PASSWORD>>" +
"&preferredAuthentications=password" +
"&readLock=changed" +
"&readLockMinAge=30000" +
"&delay=20000" +
"&delete=true";
现在Camel可以读取文件了,但是读取后并没有删除文件。在浏览文档时,它说
delete (consumer) - If true, the file will be deleted after it is processed successfully.
- camel 如何定义是否处理成功?我们是否需要为 Camel 设置任何交换 属性 以标记它已成功处理?
收到文件后,我所做的就是将其传递到另一条路线,如下所示,
from(endpointUri).to("direct:procesSftpFile");
我应该将它从 direct
更改为 vm
还是 seda
?
看起来没有人遇到过这个问题,我不知何故弄清楚了它是从哪里开始发生的。
问题不是因为 Camel sftp 组件,而是我调用的那段代码。
我流程的第二部分如下所示,
from("direct:procesSftpFile")
.log("...")
// logging and other regular processing
....
// sending to vm InOnly
.to("vm:queue1?exchangePattern=InOnly")
.. some more processing..
.to("vm:queue2?exchangePattern=InOnly")
所以问题在于在上面的代码片段中调用那些 queue1 和 queue2。
评论它们,修复它,sftp 开始删除文件。为了调用 VM,我使用 producerTemplate.asyncSend
而不是 to()
作为解决方法。
我仍然感到困惑的一件事是,如果我们使用 InOnly 交换模式,那么为什么它会影响 sftp 行为?也许我应该在一个单独的问题中问这个问题。