春季批处理中的ItemReader <List <T >>时,app.chunk.commit.interval如何工作?

时间:2020-09-05 12:25:29

标签: java spring spring-batch

我们有一个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);
}

0 个答案:

没有答案