Domyślam się, że prawdopodobnie aktualizujesz kolekcję, z której czytasz, a także aktualizujesz pole, którego używa zapytanie. Jeśli tak, to ostatnio miałem ten sam problem.
MongoItemReader to czytnik stronicowany. Tak więc za każdym razem, gdy autor aktualizuje te rekordy, czytelnik ma mniejszą pulę, ale liczba stron wciąż rośnie.
Wyobraź sobie, że mamy 20 pozycji i czytamy 5 pozycji na raz:
1) Czyta pozycje 1-5 z 20.
2) Aktualizuje pozycje 1-5, a teraz jest w sumie 15 możliwych pozycji
3) Czyta pozycje 6-10 z łącznej liczby 15.
4) Aktualizuje pozycje 6-10 i teraz jest w sumie 10 możliwych pozycji.
5) Czyta pozycje 11-15 z 10 możliwych pozycji
6) Odczyt zwraca wartość null, ponieważ dla tej strony nic nie zostało zwrócone.
Więc teraz przetworzyłeś tylko połowę.
Postępowałem zgodnie z poniższym samouczkiem, aby stworzyć MongoDbCursorItemReader, który rozwiązał ten problem dla mnie:https://blog.zenika.com/2012/05/23/wiosna-batch-and-mongodb-cursor-based-item-reader/