Как обработать «дублирующую ошибку» в Mon go BulkInsert повтор - PullRequest
0 голосов
/ 16 апреля 2020

Я вставляю большое количество документов в базу данных Mon go, используя операцию bulkWrite (Java Driver 3.12). Я также реализовал механизм повторных попыток в случае разрыва соединения.

Но есть проблема в последующих попытках: поскольку некоторые документы были вставлены в предыдущую попытку, последующая попытка приводит к Duplicate Key error

    @Autorwire  
    private ReactiveMongoOperations operations
    operations
        .execute(Document.class, collection ->
 collection.bulkWrite(insertOneRequests, new BulkWriteOptions().ordered(false)
        .bypassDocumentValidation(true)))
        .retryWhen(Retry.any().fixedBackoff(Duration.ofMillis(backoffDuration)).retryMax(retryCount)
        .doOnRetry(retryContext -> log.info("Retry"));

Есть ли способ игнорировать «Duplicate Key Error» при последующих попытках?

Как это обычно обрабатывается, учитывая, что это не редкий сценарий? Предполагая, что я пытаюсь избежать использования операций «Upsert» (Заменить) в этом случае.

1 Ответ

0 голосов
/ 20 апреля 2020

Отсюда:

"Массовая операция пытается вставить каждый документ, который вы предоставили для вставки. Если документ уже существует в коллекции, документ не вставлен (из-за ошибки дублированного ключа), и будет предпринята операция вставки следующего документа. Обратите внимание, что попытка вставки будет выполнена во всех предоставленных документах. Просто нужно подавить «Дубликат ключевой ошибки» в моих отчетах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...