spring-integration - 使用 spring-boot-starter-integration 处理来自远程动态源的大文件
问题描述
我有一个从动态源读取大文件的用例,源可以是 S3 存储桶或远程文件路径。文件的大小不允许我在处理之前将它们移动到本地磁盘。我更愿意从这些文件中流式传输数据并即时处理它们。
ReadRecord -> TransformRecord ->
RouteRecordByType -> AggregateRecordBasedOnTypeAndCountOf1000 ->
StoreRecordOnALocalFileBackedChannel -> WriteRecordsInGroupsOf1000 -> S3Bucket.
我已经使用过几次 spring 集成,我对它的构造和模式非常满意。我正在考虑使用FileReadingMessageSources
动态获取我的数据源,但没有看到任何文件系统支持的通道示例。文档中的大多数示例都使用数据库。
解决方案
如果您从远程源寻找流媒体解决方案,您需要查看S3StreamingMessageSource
,FtpStreamingMessageSource
和SftpStreamingMessageSource
,如果适合您的话。这种类型的MessageSource
只是为远程文件打开一个InputStream
,并允许您在内存中本地执行您需要的任何操作。
我不确定您对文件系统支持的 Channels是什么意思,但也许使用流式消息源解决方案您将不再需要考虑这一点。
推荐阅读
- amazon-web-services - Bitbucket 管道 AWS 脚本发送 sqs 消息失败
- mysql - 通过变音符号搜索的MYSQL错误结果
- python - BeautifulSoup decode_contents() 返回 < 而不是 <
- python - AttributeError:“AxesSubplot”对象没有属性“rowNum”
- php - 将 cURL 模块导入 AWS Lambda
- docker - Redis 在 MULTI 中错误 EXPIRE
- laravel - 追加到已经获取的集合 - 雄辩
- c# - XPath如何选择具有相同值的子节点
- meshlab - 抽取网格子集
- apache-spark - 计算给定日期范围内窗口中的行数