Sequência de execução - ItemReader
Inicialização:
O FetchUserDataReaderConfig é configurado como um ItemReader e implementa a interface ItemReader.
Variáveis page, users e userIndex são inicializadas para controlar a página atual da API, armazenar a lista de usuários retornada pela API e o índice do usuário que será processado em cada chunk.
Início do Chunk (Antes de Processar o Chunk) (beforeChunk):
Esse método é executado antes do processamento de cada chunk.
A função beforeChunk carrega dados na lista users conforme o tamanho de chunkSize, realizando múltiplas chamadas à API se necessário.
A API é chamada através do método fetchUserDataFromAPI, que incrementa a página conforme necessário para preencher users com o número de registros indicado em chunkSize.
Isso garante que o chunk tenha dados suficientes para ser processado de acordo com o tamanho configurado.
Leitura de Dados (read):
O método read é chamado repetidamente pelo Spring Batch para ler cada item do chunk atual.
Cada chamada a read retorna um usuário (UserDTO) da lista users.
A lista users é percorrida usando userIndex, e a cada leitura, userIndex é incrementado.
Quando userIndex atinge o tamanho de users, o método read retorna null, indicando que todos os dados do chunk atual foram lidos.
Fim do Chunk (Depois de Processar o Chunk) (afterChunk):
Esse método é executado após o processamento do chunk.
Ele incrementa o número da página (incrementPage) para garantir que na próxima chamada da API uma nova página de dados seja buscada.
Ele também reseta userIndex para 0 e limpa a lista users, preparando-a para o próximo chunk.
E a lista tiver 60 users, com chunkSize 10? ➡️
Atualizado