如果文件中的项目数量很少,可以安全地使用spring批量多线程步骤吗?

时间:2014-06-12 11:53:19

标签: spring spring-batch

我在文档中读到,多线程步骤并不安全,因为许多ItemReader和Writers都不是线程安全的。

我使用FlatFileItemReader来读取和处理项目。

如果文件中有大量要处理的项目,我正在使用远程分区。

但是有些步骤只有2-3个项目的输入文件(它们只是市场ID,例如eu,gb等)。我将增加几个市场。我需要运行一些命令,将这些市场ID作为输入。我想为所有这些命令并行运行命令。

即使我使用FlatFileItemReader,多线程步骤是否可以安全地用于此类用例?或者我应该进行远程分区(没有太多数据需要分区)?

此外,如果我使用多线程步骤,它是否会正常运行我使用不同的参数启动多个相同作业的实例,例如不同的约会?

1 个答案:

答案 0 :(得分:2)

FlatFileItemReader不是线程安全的,因为它的状态是基于已读取的文件中的行数。当它与多个线程一起使用时,该数字会被覆盖,因此没有办法知道重启时有什么和没有读过。如果可重启性不是问题(如果作业失败,您可以从头开始),那么您可以在FlatFileItemReader的步骤中使用多个线程。