领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我谨代表 Spring Integration 团队宣布发布另一个 Spring Integration 扩展。这次是用于服务器消息块 (Server Message Block) 的 Spring Integration,其构件为spring-integration-smb.0.5.0.RELEASE
,可在发行版仓库和 Maven Central 获取。
该项目已经存在一段时间了,但直到最近才获得了足够的社区关注,才值得发布。因此,首先要感谢您和社区的贡献!
已选择Java CIFS 客户端库作为 CIFS/SMB 网络协议的 Java 实现。它的SmbFile
抽象被简单地包装到 Spring Integration 的“远程文件”基础之上,例如SmbSession
、SmbRemoteFileTemplate
等。
SMB 通道适配器和支持类的实现与现有(S)FTP或AWS S3协议组件完全相似。因此,如果您熟悉这些组件,则使用此扩展非常简单。但无论如何,这里有一些关于现有组件的说明
为了将 SMB 文件下载到本地,提供了SmbInboundFileSynchronizingMessageSource
。它是AbstractInboundFileSynchronizingMessageSource
的简单扩展,需要注入SmbInboundFileSynchronizer
。对于过滤远程文件,您仍然可以使用任何现有的FileListFilter
实现,但提供了特定的SmbRegexPatternFileListFilter
和SmbSimplePatternFileListFilter
。对于 XML 配置,提供了<int-smb:inbound-channel-adapter>
组件。
目前还没有针对将文件传输到 SMB 的特定 SMB 要求,因此对于 XML <int-smb:outbound-channel-adapter>
组件,我们只需重用现有的FileTransferringMessageHandler
。在 Java 配置的情况下,应该为FileTransferringMessageHandler
提供SmbSessionFactory
(或SmbRemoteFileTemplate
),仅此而已!
@ServiceActivator(inputChannel = "storeToSmb")
@Bean
public MessageHandler smbMessageHandler(SmbSessionFactory smbSessionFactory) {
FileTransferringMessageHandler<SmbFile> handler =
new FileTransferringMessageHandler<>(smbSessionFactory);
handler.setRemoteDirectoryExpression(
new LiteralExpression("remote-target-dir"));
handler.setFileNameGenerator(m ->
m.getHeaders().get(FileHeaders.FILENAME, String.class) + ".test");
handler.setAutoCreateDirectory(true);
return handler;
}
在直接发布1.0.0.RELEASE
版本之前,我们希望听到社区的任何反馈,因此,请随时通过任何可用的沟通渠道与我们联系!