首页 > 解决方案 > 使用 spring-boot-starter-integration 处理来自远程动态源的大文件

问题描述

我有一个从动态源读取大文件的用例,源可以是 S3 存储桶或远程文件路径。文件的大小不允许我在处理之前将它们移动到本地磁盘。我更愿意从这些文件中流式传输数据并即时处理它们。

ReadRecord -> TransformRecord -> 
RouteRecordByType -> AggregateRecordBasedOnTypeAndCountOf1000 ->
StoreRecordOnALocalFileBackedChannel -> WriteRecordsInGroupsOf1000 -> S3Bucket.

我已经使用过几次 spring 集成,我对它的构造和模式非常满意。我正在考虑使用FileReadingMessageSources动态获取我的数据源,但没有看到任何文件系统支持的通道示例。文档中的大多数示例都使用数据库。

标签: spring-integration

解决方案


如果您从远程源寻找流媒体解决方案,您需要查看S3StreamingMessageSource,FtpStreamingMessageSourceSftpStreamingMessageSource,如果适合您的话。这种类型的MessageSource只是为远程文件打开一个InputStream,并允许您在内存中本地执行您需要的任何操作。

我不确定您对文件系统支持的 Channels是什么意思,但也许使用流式消息源解决方案您将不再需要考虑这一点。


推荐阅读