Java app.chunk.commit.interval在ItemReader情况下如何工作<;列表<;T>&燃气轮机;春季批次?

Java app.chunk.commit.interval在ItemReader情况下如何工作<;列表<;T>&燃气轮机;春季批次?,java,spring,spring-batch,Java,Spring,Spring Batch,我们有一个Spring批处理应用程序,其任务是从Oracle数据库中读取200万条记录(使用Hibernate),处理和更新数据库中的记录。我们正在使用ItemReader并将所有记录作为列表读取,但结果限制为1000(通过在select查询中设置query.maxResults(1000)) 这些记录将逐一处理并更新到数据库中。我将RangePartitioner与gridsize10一起使用,而ThreadPoolTaskExecutor与corePoolSize10一起使用 现在,在这种情

我们有一个Spring批处理应用程序,其任务是从Oracle数据库中读取200万条记录(使用Hibernate),处理和更新数据库中的记录。我们正在使用
ItemReader
并将所有记录作为列表读取,但结果限制为1000(通过在select查询中设置
query.maxResults(1000)

这些记录将逐一处理并更新到数据库中。我将RangePartitioner与
gridsize
10一起使用,而
ThreadPoolTaskExecutor与
corePoolSize
10一起使用 现在,在这种情况下,我应该如何设置
app.chunk.commit.interval
。我已经在配置中将ot设置为
3

我使用了下面的ChunkListener,下面是输出。为什么提交的项目打印为
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);
}

为什么使用
ItemReader
而不使用
ItemReader
?由于您将项目定义为
列表
,因此您的
CustomItemReader
似乎读取了单个项目(即单个列表)。@Mahmoud Ben Hassine我需要从数据库中读取200万条记录。为了避免频繁访问数据库,我每天一次读取1000条记录list@user2186831如果要避免选择查询执行计数,可以使用
List
。在ItemReader类中保留List字段,在read()方法中只按顺序返回List的元素。如果列表为空,则执行select查询并填充列表。问题中似乎缺少很多关键代码。例如,您在哪里定义块大小?默认值始终为1,您似乎从未通过使用
chunk(3)
来覆盖此值,以避免频繁访问数据库我正在一次读取列表中的1000条记录
:这不是避免频繁查询数据库的方法。JdbcCursorItemReader和JdbcPagingItemReader都为fetchSize提供了一个设置器,该设置器用于设置单个db查询中要获取的记录数。因此,在我看来,使用
ItemReader
是不正确的。但在您的案例中,您可以定义什么是项目(单个员工或员工列表)。
Output:
Items Read  : 1
Items Written  : 1
Items Committed  : 1