Spring Batch + MongoItemReader, ItemProcessor, MongoItemWriter + не читает все записи - PullRequest
0 голосов
/ 03 августа 2020

Я использую Spring Batch с базой данных Mon go.

Мне нужно получить документы в зависимости от статуса (status = PENDING ), написать в очереди Kafka и обновить поле документов с новым статусом (status = FILLED ).

Итак, я использовал MongoItemReader, CompositeItemWriter (KafkaItemWriter, MongoItemWriter) для записи в очередь Kafka и обновить его. Но когда я запускаю задание, я вижу, что некоторые документы пропущены, а количество пропущенных документов равно размеру блока.

Например, в моей коллекции 15 документов, размер блока равен 5 и MongoItemReader читает строки 1,2,3,4,5, затем строки 11,12,13,14,15 (пропуская строки 6,7,8,9,10).

My ItemProcessor, который выполняет модификацию объектов POJO. Поскольку MongoItemReader сделал ошибку sh между каждым чтением, сущности обновляются. Но похоже, что перелистывание курсора также увеличивается (как видно из журнала: идентификаторы строк 6, 7, 8, 9 и 10 были пропущены). Я видел, как в реляционной базе данных можно обойтись с помощью « SqlPagingQueryProviderFactoryBean », но он не подходит для No SQL DB. Я перепробовал все, чтобы найти решение, но ничего не помогло.

Итак, как я могу решить эту проблему?

...