Я использую 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. Я перепробовал все, чтобы найти решение, но ничего не помогло.
Итак, как я могу решить эту проблему?