es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El AbstractPagingItemReader de Spring Batch primero lee todos los registros y luego procesa y escribe.

Estoy teniendo un caso de uso en el que estoy utilizando AbstractPagingItemReader para realizar llamadas paginadas. El caso de uso es que el lector debe realizar una llamada a la API, procesar y escribir inmediatamente, y esto debe continuar hasta que el lector no reciba más registros.

Lo que está sucediendo actualmente es que acumula todos los registros primero y luego comienza a procesar y escribir.

Explicado de manera más detallada:
Digamos que quiero un total de 100 usuarios en mi destino. Para esto, hago 10 llamadas con un tamaño de página de 10 (10 * 10). El lector primero acumulará todos los 100 usuarios llamando a la API 10 veces y luego llamará al escritor. En cambio, quería enviar primero la respuesta de la primera solicitud al escritor y luego hacer la segunda llamada, y así sucesivamente.

Para hacer las 10 llamadas, agregué intencionalmente un bucle for para iterar 10 veces, de lo contrario, el código simplemente habría hecho una solicitud de búsqueda y habría llamado al escritor y habría salido.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución

    Puede utilizar el método setPageSize() de AbstractPagingItemReader para establecer el tamaño de página para cada llamada a la API. Esto garantizará que el lector realizará la llamada a la API, procesará y escribirá la respuesta de inmediato, y continuará hasta que no se recupere más registros.

    También puede utilizar el método setMaxItemCount() para establecer el número máximo de elementos a leer. Esto garantizará que el lector no realice más de la cantidad especificada de llamadas a la API.

Comments are closed.