我有一个spring批处理作业,它接收平面文件,处理记录并将输出写入另一个平面文件。我分别使用FlatFileItemReader
和FlatFileItemWriter
作为读写器。但是,当我尝试实现多线程步骤时,我的工作不能正常工作。我在日志文件
WARN ChunkMonitor:109 - No ItemReader set (must be concurrent step), so ignoring offset data.
WARN ChunkMonitor:141 - ItemStream was opened in a different thread. Restart data could be compromised.
你能帮我实现多线程步骤吗?
这是因为FlatFileItemReader不像文档所说的那样是线程安全的:
/**
* Abstract superclass for {@link ItemReader}s that supports restart by storing
* item count in the {@link ExecutionContext} (therefore requires item ordering
* to be preserved between runs).
*
* Subclasses are inherently *not* thread-safe.
*
* @author Robert Kasanicky
*/
要实现一个多线程读取器,你必须编写一个同步的自定义读取器打开和更新ItemStream接口的调用。否则,您的工作将不安全,无法重新启动。
希望有帮助
对