首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache camel: SFTP:多次下载文件

Apache camel: SFTP:多次下载文件
EN

Stack Overflow用户
提问于 2013-03-09 07:05:48
回答 2查看 5.6K关注 0票数 2

我已经定义了以下驼峰路由:

代码语言:javascript
复制
    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和camel-ftp的2.10.4版本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-09 16:36:26

Indempotent Consumer做到了这一点。the FTP2 component的文档将the File2 component称为“因为那里的所有选项也适用于此组件”。有一个参数"indempotent=true“可以激活LRUCache的使用:

选项,使用幂等消费者EIP模式让Camel跳过已经处理的文件。默认情况下,将使用基于内存的LRUCache,可容纳1000个条目。如果为noop=true,那么幂等函数也将被启用,以避免重复使用相同的文件。

我完整的源代码定义现在看起来如下所示:

代码语言:javascript
复制
from("sftp://myhost//path/to/files/?username=user&password=secret&idempotent=true")
票数 3
EN

Stack Overflow用户

发布于 2013-03-09 11:44:46

来自camel ftp2文档:

FTP使用者在默认情况下会将使用的文件保留在远程

服务器上不动。如果您希望它删除文件或将它们移动到另一个位置,则必须显式配置它。例如,您可以使用delete=true删除文件,或使用move=.done将文件移动到隐藏的完成子目录中。

要删除该文件,请将路由更改为

代码语言:javascript
复制
from("sftp://myhost//path/to/files?delete=true")

确保连接的用户具有所需的权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15304840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档