You need to enable JavaScript to run this app. Spring Integration SFTP递归下载触发文件名模式警告如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Spring Integration SFTP递归下载触发文件名模式警告如何解决

问题根因

这个警告是Spring Integration SFTP模块的内置校验触发的:当MGET命令启用RECURSIVE递归选项时,框架要求传入的远程路径表达式末尾必须匹配*通配符,否则就会输出该WARN日志,该校验不影响自定义文件名过滤器的实际生效逻辑,仅为规范提示。

可行解决方案

方案1(推荐,彻底消除警告且不影响原有逻辑)

修改MGET命令的远程路径表达式,在原有路径末尾拼接*通配符满足框架校验要求,你配置的regexFileNameFilter和持久化去重过滤器依然会正常工作,只会下载匹配正则的JSON文件,不会下载多余文件。
修改后的配置代码如下:

@Bean
public IntegrationFlow jsonFilesReadingFlow() {
    String JSON_FILE_REGEX = "...";
    return IntegrationFlows
            .from("sftp_server")
            .handle(Sftp
                    .outboundGateway(sftpSessionFactory(), Command.MGET, "payload + '*'")
                    .options(Option.RECURSIVE)
                    .regexFileNameFilter(JSON_FILE_REGEX)
                    .filter(new SftpPersistentAcceptOnceFileListFilter(new SimpleMetadataStore(), "Downloaded_json_file:"))
                    .autoCreateLocalDirectory(true)
                    .localDirectoryExpression("'/${catalina.base}/webapps/app/WEB-INF/classes/temporaryJsonFilesDirectory'")
                    .localFilenameExpression("#remoteFileName.replaceFirst('sftpSource', 'localTarget')"))
            .channel("downloadJsonFileOutputChannel")
            .get();
}

方案2(兜底方案,仅屏蔽日志)

如果不方便调整路径表达式,可在日志配置中单独调低org.springframework.integration.sftp.gateway.SftpOutboundGateway类的日志级别为ERROR,即可屏蔽该WARN日志输出,不影响功能运行。

内容的提问来源于stack exchange,提问作者Michal Lukaszewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 07:18:03