如何配置Spring Cloud Dataflow预打包SFTP源的多目录?
处理Spring Cloud Dataflow SFTP源多目录配置问题
一、单SFTP工厂多目录配置(同一服务器多目录)
适用于所有监听目录在同一SFTP服务器下的场景,无需配置多工厂,直接指定完整远程路径即可避免默认根目录导致的找不到文件问题。
# 基础SFTP连接配置 sftp.supplier.host=your-sftp-host sftp.supplier.port=22 sftp.supplier.username=your-username sftp.supplier.password=your-password # 指定多个远程监听目录(逗号分隔,必须写完整路径) sftp.supplier.directories=/data/imports,/docs/received # 可选全局配置 sftp.supplier.max-fetch=1 sftp.supplier.fair=true
二、多SFTP工厂多目录配置(多服务器/独立连接)
针对不同SFTP服务器的场景,你提供的示例核心是自定义工厂别名,以下是修正后的完整配置及规则说明:
配置规则说明
one、two是自定义的工厂别名,可替换为任意唯一字符串(如sftp-server-1、backup-server),用来区分不同的SFTP连接实例。- 每个工厂必须配置
remote-dir,明确指定该工厂要监听的远程目录,否则默认使用根目录/,这是你遇到FileNotFoundException的核心原因。 directories项的格式为[工厂别名].[自定义标识],标识仅用于绑定任务,可任意命名。
# 第一个SFTP工厂(别名one) sftp.supplier.factories.one.host=host1 sftp.supplier.factories.one.port=1234 sftp.supplier.factories.one.username=user1 sftp.supplier.factories.one.password=pass1 # 必须配置:指定该工厂监听的远程目录 sftp.supplier.factories.one.remote-dir=/app/data/source # 第二个SFTP工厂(别名two) sftp.supplier.factories.two.host=host2 sftp.supplier.factories.two.port=2345 sftp.supplier.factories.two.username=user2 sftp.supplier.factories.two.password=pass2 # 必须配置:指定该工厂监听的远程目录 sftp.supplier.factories.two.remote-dir=/backup/received # 关联工厂与监听任务(格式:工厂别名.自定义标识) sftp.supplier.directories=one.sftpSource,two.sftpSecondSource # 全局配置 sftp.supplier.max-fetch=1 sftp.supplier.fair=true
常见问题排查
- FileNotFoundException:验证每个工厂的
remote-dir是否为SFTP服务器上真实存在的路径,且配置的SFTP用户有读取权限,可通过SFTP客户端手动登录确认。 - 配置解析错误:删除配置项末尾多余的逗号(示例中
port=1234,这类格式会导致解析失败)。 - 工厂冲突:确保
factories下的别名唯一,不要重复使用同一别名。
内容的提问来源于stack exchange,提问作者oldvirus_231
相关产品推荐
相关产品推荐

