Camel - 如何限制sftp使用者的文件大小?

时间:2017-11-28 09:49:52

标签: java apache-camel camel-ftp spring-camel

我有dsl路线:

from(String.format("sftp://%s@%s:%d/%s?password=%s&delete=true&readLock=changed&delay=%s",
                systemSettingsService.getSystemSettings().getSftpUserName(),
                systemSettingsService.getSystemSettings().getSftpHost(),
                systemSettingsService.getSystemSettings().getSftpPort(),
                systemSettingsService.getSystemSettings().getSftpSourcePathDestWorking(),
                systemSettingsService.getSystemSettings().getSftpPassword(),
                systemSettingsService.getSystemSettings().getSftpPollPeriod())).streamCaching()

                .process(...

我想限制使用的文件大小。例如,我想忽略大小超过100Mb的文件。可选地,如果camel遇到超过100mb的文件,我想要回调。

我读过:

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

但我找不到任何相关的内容

1 个答案:

答案 0 :(得分:3)

您可以考虑使用filter

from(String.format("sftp://%s@%s:%d/%s?filter=#myFilter",...

创建一个实现GenericFileFilter接口的自定义bean

import org.apache.camel.component.file.GenericFile;
import org.apache.camel.component.file.GenericFileFilter;

public class MyFileFilter<T> implements GenericFileFilter<T> {
    @Override
    public boolean accept(GenericFile<T> file) {
        // I'm guessing the return value will be in bytes
        if (file.getFileLength() < (100 * 1024 * 1024))
            return true;
        return false;
    }
}

阅读更多相关信息here.值得记住的是,FTP和SFTP组件都是从文件组件继承的。