小编典典

使用Spring批处理大文件的最佳方法

java

我正在使用Spring批处理下载一个大文件来处理它。场景很简单:

1. Download the file via http
2. process it(validations,transformations)
3. send it into queue
  • 无需保存输入文件数据。
  • 我们可能同时运行多个(相同场景的)作业实例

我正在寻找最佳实践来处理这种情况。

我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它?
在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。)

另一方面,我可以下载它并将其保留在内存中,但是我担心如果我运行许多作业,实例很快就会内存不足。

您如何建议确定这种情况?我应该完全使用tasklet吗?

谢谢。


阅读 218

收藏
2020-11-01

共1个答案

小编典典

如果文件很大,除非有充分的理由,否则建议将其存储到磁盘。通过将文件保存到磁盘,可以在发生错误时重新启动作业,而无需重新下载文件。

关于Taskletvs Spring Integration,我们通常建议将Spring
Integration用于这种类型的功能,因为那里已经提供了FTP功能。话虽这么说,Spring XD Tasklet对FTP功能使用了A
,因此采用这种方法也很常见。

我在SpringOne2GX上发表的Gunnar Hillert演讲是一个很好的视频,介绍了Spring Batch和Spring
Integration的集成。您可以在这里找到整个视频:https
:
//www.youtube.com/watch?v=8tiqeV07XlI。关于在Spring
Batch之前使用Spring Batch Integration for FTP的部分大约在29:37。

2020-11-01