Apache camel apachecamel:SFTP:多次下载的文件
我定义了以下骆驼路线:Apache camel apachecamel:SFTP:多次下载的文件,apache-camel,Apache Camel,我定义了以下骆驼路线: RouteBuilder rb = new RouteBuilder() { @Override public void configure() throws Exception { from("sftp://myhost//path/to/files/") .to("log:loggingCategory?level=INFO") .to("file:///t
RouteBuilder rb = new RouteBuilder() {
@Override
public void configure() throws Exception {
from("sftp://myhost//path/to/files/")
.to("log:loggingCategory?level=INFO")
.to("file:///tmp/");
}
};
当我使用此路由启动上下文时,camel会连接并下载文件。我的问题是,camel重复下载相同的文件,直到上下文关闭。FTP2组件为什么会这样做?我如何阻止它
我已经通过maven包含了camel core的2.10.4版和camel ftp。来自camel ftp2文档: 默认情况下,FTP使用者将保留未触及的已使用文件 远程FTP服务器。如果需要,必须显式配置它 它可以删除文件或将其移动到其他位置。例如 可以使用delete=true删除文件,也可以使用move=.done移动文件 将文件保存到隐藏的done子目录中 要删除文件,请将路由更改为
from("sftp://myhost//path/to/files?delete=true")
确保连接的用户具有所需的权限。来自camel ftp2文档: 默认情况下,FTP使用者将保留未触及的已使用文件 远程FTP服务器。如果需要,必须显式配置它 它可以删除文件或将其移动到其他位置。例如 可以使用delete=true删除文件,也可以使用move=.done移动文件 将文件保存到隐藏的done子目录中 要删除文件,请将路由更改为
from("sftp://myhost//path/to/files?delete=true")
确保所连接的用户具有所需的权限。完成此操作。的文档称为“因为其中的所有选项也适用于此组件”。有一个参数“indemponent=true”用于激活LRUCache的使用:
使用幂等消费者EIP模式允许驼峰跳过的选项
已处理的文件。默认情况下将使用基于内存的LRUCache
可容纳1000个条目。如果noop=true,则将启用幂等元
同时避免重复使用相同的文件
我的完整源定义现在如下所示:
from("sftp://myhost//path/to/files/?username=user&password=secret&idempotent=true")
这就是诀窍。的文档称为“因为其中的所有选项也适用于此组件”。有一个参数“indemponent=true”用于激活LRUCache的使用:
使用幂等消费者EIP模式允许驼峰跳过的选项
已处理的文件。默认情况下将使用基于内存的LRUCache
可容纳1000个条目。如果noop=true,则将启用幂等元
同时避免重复使用相同的文件
我的完整源定义现在如下所示:
from("sftp://myhost//path/to/files/?username=user&password=secret&idempotent=true")
谢谢你的评论,但我不想删除源文件。我的意图是,camel确实从sftp源复制所有文件,然后停止,因此我希望在Unix上通过sftp实现类似“cp-r”的递归复制。我现在已经找到了解决方案,我将把它作为答案发布在这里。谢谢你的评论,但我不想删除源文件。我的意图是,camel确实从sftp源复制所有文件,然后停止,因此我希望在Unix上通过sftp实现类似“cp-r”的递归复制。我现在已经找到了解决方案,我将把它作为答案发布在这里。你是对的,使用幂等选项可以解决你的问题。请记住设置“基于文件的幂等存储库”选项或自定义选项,否则在重新启动或文件数超过1000时,最终会出现相同的问题。没错,使用幂等选项可以解决问题。请记住设置“基于文件的幂等存储库”选项或自定义选项,否则在重新启动时或文件数超过1000时,最终会出现相同的问题。