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
相关产品推荐
相关产品推荐

