【问题标题】:Camel - how to limit file size for sftp consumer?Camel - 如何限制 sftp 消费者的文件大小?
【发布时间】:2017-11-28 20:29:38
【问题描述】:

我有 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 的文件。如果骆驼遇到的文件超过 100mb,我可以选择进行回调

我已阅读:

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

但我找不到任何相关的东西

【问题讨论】:

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


    【解决方案1】:

    您可以考虑使用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 组件继承自 File 组件。

    【讨论】:

    • 如何在骆驼基础设施中注册过滤器?
    • 我对 Camel 的 Java DSL 不太熟悉,但是在阅读了 this 之后,您似乎可以使用 @BeanInject 注释,如 Accessing a Spring bean from Java 一节中所述
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多