用于文件处理的Spring批处理

用于文件处理的Spring批处理,spring,spring-batch,Spring,Spring Batch,Spring批处理是否适合处理大量的单个文件 SpringBatch似乎面向以数据为中心的作业。我需要从S3存储桶中提取数百万个文件,解压缩它们,根据内容执行一些逻辑,然后调用web服务 手工实现这一点是微不足道的,但我不太喜欢在跟踪作业执行以及作业在失败前的进展情况时重新发明轮子。Spring Batch似乎非常适合此作业监视,但我不确定是否将其颠覆以进行文件处理是一个太远的步骤。简短的回答是肯定的,您可以使用Spring Batch进行此操作。我曾经做过一个小的POC,我们必须在一个批处理过

Spring批处理是否适合处理大量的单个文件

SpringBatch似乎面向以数据为中心的作业。我需要从S3存储桶中提取数百万个文件,解压缩它们,根据内容执行一些逻辑,然后调用web服务


手工实现这一点是微不足道的,但我不太喜欢在跟踪作业执行以及作业在失败前的进展情况时重新发明轮子。Spring Batch似乎非常适合此作业监视,但我不确定是否将其颠覆以进行文件处理是一个太远的步骤。

简短的回答是肯定的,您可以使用Spring Batch进行此操作。我曾经做过一个小的POC,我们必须在一个批处理过程中将数百万个图像从源系统迁移到目标系统,它在IMHO中运行良好

再加上@Prasanna Talakanti的评论,我建议使用Spring集成和Spring批处理的组合。SpringBatch将为您提供批处理的基础设施(每隔一段时间提交,如果失败则重新启动作业等),而SpringIntegration将为您提供web服务网关方面的内容


在SpringBatch中,如果需要,您可以定义从S3读取数据的读卡器和将数据写入目标的写卡器,处理器位于两者之间。您还可以微调提交间隔,这样如果作业在提交间隔期间失败,您就有了回滚点。

我认为根据您的描述,您应该看看Spring Integration,它有用于处理文件的适配器和web服务网关,非常适合您的用例。感谢您的回复。我已经在SpringIntegration中实现了部分系统,但是SI最适合于事件,并且没有提供跟踪作业运行并在失败时重试的概念。SI非常适合监视文件存储库和对文件事件作出反应,但如果我需要将S3存储桶的全部内容作为一项临时工作来处理,它就没有多大用处了。