我正在使用Spring批量下载一个大文件来处理它。 场景非常简单:
1. Download the file via http
2. process it(validations,transformations)
3. send it into queue
我正在寻找处理这种情况的最佳做法。
我是否应该创建Tasklet以在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题 (确保我删除它,确保我没有覆盖其他临时文件名等。)
另一方面,我可以将其下载并保存在内存中,但我担心如果我运行很多作业,很快就会失去内存。
你会如何建议这种情况?我应该使用tasklet吗?
谢谢。答案 0 :(得分:3)
如果您有一个大文件,我建议将其存储到磁盘,除非有充分的理由不这样做。通过将文件保存到磁盘,它允许您重新启动作业,而不需要在发生错误时重新下载文件。
关于Tasklet
vs Spring Integration,我们通常建议使用Spring Integration来实现此类功能,因为FTP功能已经存在。话虽这么说,Spring XD使用Tasklet
来实现FTP功能,所以采用这种方法并不罕见。
关于Spring Batch和Spring Integration集成的好视频是Gunnar Hillert和我在SpringOne2GX上发表的演讲。您可以在此处找到整个视频:https://www.youtube.com/watch?v=8tiqeV07XlI。关于在Spring Batch之前使用Spring Batch Integration for FTP的部分大约是29:37。
答案 1 :(得分:1)