2

我已经定义了以下骆驼路线:

    RouteBuilder rb = new RouteBuilder() {
        @Override
        public void configure() throws Exception {
            from("sftp://myhost//path/to/files/")
            .to("log:loggingCategory?level=INFO")
            .to("file:///tmp/");
        }
    };

当我使用这条路线启动上下文时,骆驼确实会连接并下载文件。我的问题是骆驼重复下载相同的文件,直到上下文被关闭。为什么 FTP2 组件会这样做,我该如何阻止它?

我通过 maven 包含了 2.10.4 版的 camel-core 和 camel-ftp。

4

2 回答 2

3

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

选择使用幂等消费者 EIP 模式让 Camel 跳过已处理的文件。默认情况下,将使用一个基于内存的 LRUCache,它包含 1000 个条目。如果 noop=true 则也将启用幂等性以避免一遍又一遍地使用相同的文件。

我的完整源定义现在如下所示:

from("sftp://myhost//path/to/files/?username=user&password=secret&idempotent=true")
于 2013-03-09T08:36:25.757 回答
1

来自骆驼 ftp2 文档:

默认情况下,FTP 使用者将在远程 FTP 服务器上保留已使用的文件不变。如果您希望它删除文件或将它们移动到另一个位置,则必须明确配置它。例如,您可以使用 delete=true 删除文件,或使用 move=.done 将文件移动到隐藏的 done 子目录中。

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

from("sftp://myhost//path/to/files?delete=true")

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

于 2013-03-09T03:44:46.260 回答