如何解决春季批处理中的ItemReader <List <T >>时,app.chunk.commit.interval如何工作?
我们有一个Spring批处理应用程序,其工作是从Oracle数据库中读取200万条记录(使用Hibernate),处理和更新数据库中的记录。我们正在使用ItemReader<List<Employee>>
并读取所有记录作为列表,但结果限制为1000(通过在select查询中设置query.maxResults(1000)
)。
记录将被一个接一个地处理并更新到数据库中。我正在使用gridsize
10和ThreadPoolTaskExecutor
10的RangePartitioner
现在,在这种情况下应该如何设置corePoolSize
。在配置中,我将ot设置为app.chunk.commit.interval
。
我使用了下面的ChunkListener,下面是输出。为什么提交的项目被打印为3
。请帮助我理解。
1
}
public class CustomItemReader implements ItemReader<List<Employee>>,ChunkListener {
@Override
public void afterChunk(ChunkContext chunkContext) {
System.out.println("Items Read "+ chunkContext.getStepContext().getStepExection().getReadCount());
System.out.println("Items Written "+ chunkContext.getStepContext().getStepExection().getWriteCount());
System.out.println("Items Committed "+ chunkContext.getStepContext().getStepExection().getCommitCount());
}
@Override
public void afterChunkError(ChunkContext chunkContext) {
}
@Override
public void beforeChunk(ChunkContext chunkContext) {
System.out.println("Chunk processing started " + chunkContext);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。