![](/img/trans.png)
[英]FlatFileItemReader using FixedLengthTokenizer not working
[英]Using FlatFileItemReader and MultiResourceItemReader with SynchronizedItemStreamReader
尝试使用 MultiResourceItemReader 处理多个 csv 文件并使用 FlatFileItemReader 读取每个文件。 尝试使用任务执行器处理步骤时,遇到两个问题:
MultiResourceItemReader<activeForecast> resourceItemReader = new MultiResourceItemReader<>();
resourceItemReader.setResources(DataSyncUtils.getFileName(activeForecastFilePath));
resourceItemReader.setDelegate(activeForecastReader());
SynchronizedItemStreamReader<activeForecast> synchronizedItemStreamReader = new SynchronizedItemStreamReader<>();
synchronizedItemStreamReader.setDelegate(resourceItemReader);
return synchronizedItemStreamReader;
我的问题:我是否需要将 SynchronizedItemStreamReader 与 FlatFileItemReader 和 MultiResourceItemReader 一起使用? 如果是,为什么以及如何?
@Bean("activeForecastitemReader")
@StepScope
public MultiResourceItemReader<activeForecast> activeForecastItemReader() {
MultiResourceItemReader<activeForecast> resourceItemReader = new MultiResourceItemReader<>();
resourceItemReader.setResources(DataSyncUtils.getFileName(activeForecastFilePath));
resourceItemReader.setDelegate(activeForecastReader());
return resourceItemReader;
}
public FlatFileItemReader<activeForecast> activeForecastReader() {
FlatFileItemReader<activeForecast> flatFileItemReader = new FlatFileItemReader<>();
flatFileItemReader.setName("activeForecast-Reader");
flatFileItemReader.setLineMapper(activeForecastLineMapper());
flatFileItemReader.setLinesToSkip(1);
flatFileItemReader.setSaveState(false);
return flatFileItemReader;
}
MultiResourceItemReader
按顺序读取文件。 所以在多线程步骤中使用它对我来说没有意义。
如果你想 go 与多线程并行,我相信分区步骤是更好的选择。 在这种情况下,您让每个工作线程处理一个不同的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.