Spring Batch + MongoItemReader, ItemProcessor, MongoItemWriter + не читает все записи
Я использую Spring Batch с базой данных Mongo.
Мне нужно получить документы на основе статуса (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).
Мой ItemProcessor
который выполняет модификацию объектов POJO. Поскольку MongoItemReader выполняет сброс между каждым чтением, сущности обновляются. Но кажется, что перелистывание курсора также увеличивается (как видно из журнала: идентификаторы строк 6, 7, 8, 9 и 10 были пропущены). Я видел, как в реляционной базе данных можно обойтись с помощью " SqlPagingQueryProviderFactoryBean ", но он не подходит для NoSQL DB. Я перепробовал все, чтобы найти решение, но мне ничего не помогло.
Итак, как я могу решить эту проблему?