0

我正在运行我的骆驼 ftp 以将大约 10000 个文件从远程 linux 服务器目录下载到本地计算机目录。一旦完成下载大约 2000 个文件,我就会收到一堆内存不足错误。根据其他论坛主题,建议使用 maxMessagesPerPoll。但如果我将它设置为 1000,它只会下载 1000 个文件并停止。我的代码很简单,取自camel ftp example

from("sftp://xxxxx:22//tmp/serverfolder/?stepwise=false&include=ABC*.txt}}&username=XXXX&password=XXXXX&maximumReconnectAttempts=0&delay=5s&maxMessagesPerPoll=1000")
.to(/tmp/localfolder/);
4

1 回答 1

0

我相信你在与论坛上的人交谈时走在正确的轨道上。但是,看起来他们的一条消息被遗漏/丢失了。Camel FTP 是一个“轮询端点”,这意味着它会不断地循环调用端点。这一点都不难配置,它可以让你拉几个文件,稍等片刻,然后拉更多。理想情况下,这将允许您跟上放置到目录中的文件,因此您通常不会移动 10,000 批文件。你可以每隔几秒钟移动几百个。

文档:

http://camel.apache.org/polling-consumer.html

http://camel.apache.org/ftp.html

来自 FTP 文档的重要说明:请参阅 File2,因为那里的所有选项也适用于该组件。

http://camel.apache.org/file2.html

来自 file2 文档的信息

Property    Default    Description
delay       500        Milliseconds before the next poll of the file/directory.

这仅仅意味着您可以每隔几秒或几分钟获取几个文件,而不是一次尝试移动所有 10k。还请记住,在使用此选项时,除非您只是偶尔开始一次骆驼路线,否则您通常永远不会积累 10k。

重要说明 2: FTP 消费者不支持并发

请记住这一点。您将无法仅添加一堆线程来提高性能,因此如果您想处理大量文件,保持组件持续运行很重要。理想情况下,不断消耗它们而不是一天一次的批量加载是首选。

于 2016-06-17T10:40:19.347 回答