sql >> Base de Datos >  >> NoSQL >> MongoDB

Spring MongoItemReader no lee todos los registros en una sola ejecución

Supongo que probablemente esté actualizando la colección de la que está leyendo y también está actualizando un campo que está usando la consulta. Si es así, tuve el mismo problema recientemente.

MongoItemReader es un lector paginado. Entonces, cada vez que el escritor actualiza esos registros, el lector tiene un grupo más pequeño pero la página sigue aumentando.

Así que imagina que tenemos 20 artículos y leemos 5 artículos a la vez:

1) Lee los elementos 1-5 de un total de 20.

2) Actualiza los artículos 1-5 y ahora hay un total de 15 artículos posibles

3) Lee los elementos 6-10 de un total de 15.

4) Actualiza los artículos 6-10 y ahora hay un total de 10 artículos posibles.

5) Lee los elementos 11-15 de 10 elementos posibles

6) Leer devuelve nulo porque no hay nada devuelto para esa página.

Así que ahora solo ha procesado la mitad.

Seguí el tutorial a continuación para crear un MongoDbCursorItemReader que me resolvió este problema:https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/