|
对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
远程文件信息
从 5.2 版开始,FtpStreamingMessageSource (FTP 流式入站通道适配器),FtpInboundFileSynchronizingMessageSource (FTP 入站通道适配器)和 “read”命令FtpOutboundGateway (FTP 出站网关)在消息中提供其他标头以生成有关远程文件的信息:
-
FileHeaders.REMOTE_HOST_PORT- 文件传输作期间远程会话已连接的 host:port 对; -
FileHeaders.REMOTE_DIRECTORY- 已执行作的远程目录; -
FileHeaders.REMOTE_FILE- 远程文件名;仅适用于单文件作。
由于FtpInboundFileSynchronizingMessageSource不会针对远程文件生成消息,但使用本地副本,AbstractInboundFileSynchronizer将有关远程文件的信息存储在MetadataStore(可以在外部配置)的 URI 样式 (protocol://host:port/remoteDirectory#remoteFileName) 在同步作期间。
此元数据由FtpInboundFileSynchronizingMessageSource轮询本地文件时。
删除本地文件时,建议删除其元数据条目。
这AbstractInboundFileSynchronizer提供一个removeRemoteFileMetadata()回调。
此外,还有一个setMetadataStorePrefix()用于元数据键。
建议将此前缀与MetadataStore-基于FileListFilter实现,当相同时MetadataStoreinstance 在这些组件之间共享,以避免条目覆盖,因为 filter 和AbstractInboundFileSynchronizer对元数据条目键使用相同的本地文件名。