在Spring Batch中按顺序处理多个文件

时间:2011-12-13 09:42:39

标签: spring-batch

我有以下用例:我需要处理大量文件。每个处理看起来或多或少都像这样:

1)读取文件

2)对内容进行操作(a)

3)对内容进行操作(b)

4)对内容进行操作(c)

    ... 

n)删除文件

Spring Batch似乎是解决这个问题的一个很好的解决方案,但有一个例外:我不想读取步骤1中的所有文件,将所有文件传递给步骤2)等因为它会耗尽很多记忆。

编辑:我将文件提交到内存(而不是数据库)。这就是为什么我更喜欢逐个或批量处理文件。我的意思是:在单个文件/批处理上运行所有步骤(在最后一步中删除文件/批处理,清理内存),然后继续下一个文件/批处理,依此类推。

Spring Batch是否有一种机制支持一遍又一遍地执行所有步骤? 或者我应该多次运行相同的工作,直到我的文件用完为止?

谢谢和最诚挚的问候, 彼得

2 个答案:

答案 0 :(得分:2)

在Spring Batch Doc中,这是在multi-file input

下处理的

它只需一步即可完成,这将是:

  • 创建文件位置列表
  • 打开第一个文件,读取/处理直到结束,关闭文件
  • 打开下一个......等等

答案 1 :(得分:1)

在N文件的简单情况下,您需要执行N个作业,每个作业都传递一个文件名JobParameter。您的每个处理步骤都不能用Spring Batch表示,但您可以使用CompositeItemProcessor来链接您的处理器。