我在文档中读到,多线程步骤并不安全,因为许多ItemReader和Writers都不是线程安全的。
我使用FlatFileItemReader来读取和处理项目。
如果文件中有大量要处理的项目,我正在使用远程分区。
但是有些步骤只有2-3个项目的输入文件(它们只是市场ID,例如eu,gb等)。我将增加几个市场。我需要运行一些命令,将这些市场ID作为输入。我想为所有这些命令并行运行命令。
即使我使用FlatFileItemReader,多线程步骤是否可以安全地用于此类用例?或者我应该进行远程分区(没有太多数据需要分区)?
此外,如果我使用多线程步骤,它是否会正常运行我使用不同的参数启动多个相同作业的实例,例如不同的约会?
答案 0 :(得分:2)
FlatFileItemReader
不是线程安全的,因为它的状态是基于已读取的文件中的行数。当它与多个线程一起使用时,该数字会被覆盖,因此没有办法知道重启时有什么和没有读过。如果可重启性不是问题(如果作业失败,您可以从头开始),那么您可以在FlatFileItemReader
的步骤中使用多个线程。