Spring Batch - Fazendo envio de dados pela metade

Olá,

Estou com um problema ao fazer o envio de dados de venda pelo Spring Batch, no caso possuo uma tarefa que deve enviar todas as vendas do dia para uma integração.

Por exemplo, no dia 05/05/2016 ocorreram 8.000 vendas, elas devem ser enviadas a partir das 00:01 hr do dia seguinte, porém, o que ocorre é que é enviado apenas 4.000, ficando para trás a metade e caso eu executo novamente o programa ele envia metade da metade, no caso as 4.000 que restaram é enviado 2.000 e deixado as outras 2.000 para trás assim sucessivamente.

Gostaria de saber como faço para resolver isso sem ter que colocar um limite gigante de paginação ?

`
@SuppressWarnings(“ALL”)
@Configuration
public class VendasPDVConfiguration {

@Bean
public ItemReader<VendaDiaria> vendaDiariatemReader(VendaDiariaDao vendaDiariaDao) {
    final RepositoryItemReader<VendaDiariaECF> repositoryItemReader = new RepositoryItemReader();
    repositoryItemReader.setRepository(vendaDiariaDao);
    repositoryItemReader.setMethodName("findByProcessadoERPIsNull");
    repositoryItemReader.setPageSize(2000);

    final Map<String, Sort.Direction> sort = new HashMap<>();
    sort.put("pk", Sort.Direction.ASC);
    repositoryItemReader.setSort(sort);

    return repositoryItemReader;
}

@Bean
public ItemProcessor<VendaDiariaDao, VendaDiariaDao> vendaDiariaDaoItemProcessor(BarERPQtdeVendidaDao barERPQtdeVendidaDao,
                                                                                                                BarErpProdutoDao barErpProdutoDao,
                                                                                                                BarErpFilialDao barErpFilialDao,
                                                                                                                VendaDiariaDaoDao VendaDiariaDaoDao) {
    return new VendaDiariaItemProcessor(barERPQtdeVendidaDao, barErpProdutoDao, barErpFilialDao, VendaDiariaDaoDao);
}

@Bean
public ItemWriter<VendaDiaria> vendaDiariaItemWriter(VendaDiariaDao VendaDiariaDao) {
    return new VendaDiariaITemWriter(VendaDiariaDao);
}


@Bean
public Step vendaDiariaStep(StepBuilderFactory stepBuilderFactory,
                                 @Qualifier("vendaDiariatemReader") ItemReader<VendaDiaria> reader,
                                 @Qualifier("vendaDiariaDaoItemProcessor") ItemProcessor<VendaDiaria, VendaDiaria> processor,
                                 @Qualifier("vendaDiariaItemWriter") ItemWriter<VendaDiaria> writer) {
    return stepBuilderFactory.get("barFtVendaDiariaStep")
            .<VendaDiaria, VendaDiaria>chunk(500)
            .reader(reader)
            .processor(processor)
            .writer(writer)
            .build();
}

@Bean
public Job vendaDiariaJob(JobBuilderFactory jobBuilderFactory,
                               @Qualifier("vendaDiariaStep") Step vendaDiariaStep                                   
) {
    return jobBuilderFactory.get("vendaDiariaJob")
            .incrementer(new RunIdIncrementer())
            .flow(vendaDiariaStep)                
            .end()
            .build();
} `

Estou com este mesmo problema! Já conseguiu solucionar?

Uma linha para descobrir a solução é que se subtituir o setMethodName para findAll ele funciona sem problemas, mas com uma customQuery, nada feito.

Você usa chunk processing certo? Qual commit-interval?