У меня есть приложение Springbatch, и у меня возникают проблемы с извлечением всех строк с использованием JdbcPagingItemReader.
Всего строк -
выберите количество (*) из web_view; -
12057
datasource.chunk.size = 500
@Bean
public PagingQueryProvider pagingQueryProvider() {
SqlServerPagingQueryProvider sqlServerPagingQueryProvider = new SqlServerPagingQueryProvider();
Map<String, Order> sortKey = new HashMap<>();
sortKey.put("type", Order.ASCENDING);
sqlServerPagingQueryProvider.setSelectClause("select *");
sqlServerPagingQueryProvider.setFromClause("from web_view");
sqlServerPagingQueryProvider.setSortKeys(sortKey);
return sqlServerPagingQueryProvider;
}
@Bean
public JdbcPagingItemReader<Web> jdbcPagingItemReader() throws Exception {
return new JdbcPagingItemReaderBuilder<Web>()
.name("jdbcPagingItemReader")
.dataSource(dataSource())
.queryProvider(pagingQueryProvider())
.rowMapper(new BeanPropertyRowMapper<>(Web.class))
.pageSize(chunkSize)
.saveState(true)
.build();
}
@Bean
public Job importUserJob(JobCompletionNotificationListener jobCompletionNotificationListener, Step step1) {
return jobBuilderFactory.get("migrateWebJob")
.incrementer(new RunIdIncrementer())
.listener(jobCompletionNotificationListener)
.flow(step1)
.end()
.build();
}
@Bean
public Step step1() throws Exception {
return stepBuilderFactory.get("step1")
.<Web, WebStore>chunk(chunkSize)
.reader(jdbcPagingItemReader())
.processor(webStoreItemProcessor())
.writer(eventHubItemWriter())
.build();
}
Изящно останавливается после 3-й обработки подкачки только 1500 строк из 12057.