我在文档中看到,使用多线程步骤是不安全的,因为许多ItemReaders和Writer都不是线程安全的。
我正在使用FlatFileItemReader读取和处理项目。
在需要处理大量项的文件中,我使用的是远程分区。
但有些步骤只有2-3个条目的输入文件(它们只是市场ids,如eu、gb等)。我会再增加几个市场。我需要运行一些以这些市场ids作为输入的命令。我希望为所有这些命令并行运行命令。
即使我使用的是FlatFileItemReader,多线程步骤是否可以安全地用于这种用例?或者我应该选择远程分区(没有多少数据需要分区)?
另外,如果我使用多线程步骤,它会正常运行吗?我用不同的参数(例如不同的日期)启动多个相同作业的实例?
发布于 2014-06-12 14:33:58
FlatFileItemReader不是线程安全的,因为它的状态基于已读取的文件中的行数。当将它与多个线程一起使用时,该数字会被覆盖,因此没有一种方法可以知道重启时已经读取和未读取的内容。如果可重新启动不是一个问题(如果作业失败,您可以从一开始就开始工作),那么您可以在一个步骤中使用多个线程来处理FlatFileItemReader。
https://stackoverflow.com/questions/24183703
复制相似问题