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时,最终会出现相同的问题。