Я хочу повторить неудачные элементы, когда dynamicodbmapper.save/writeitem возвращает некоторые необработанные элементы. Ниже приведен мой фрагмент кода, который я пробовал до сих пор.
List<UserDetails> userDetails = buildUserDeatails();
//List<DynamoDBMapper.FailedBatch> failedBatches = mapper.batchSave(userDetails);
List<DynamoDBMapper.FailedBatch> failedBatches = mapper.batchWrite(userDetails,new ArrayList<UserDetails>());
System.out.println("Failed batches" + failedBatches.size());
for (FailedBatch failedBatch : failedBatches) {
System.out.println("Failed batches process start*********");
Map<String, List<WriteRequest>> batchUnprocessedItems = failedBatch.getUnprocessedItems();
System.out.println("Failed batches process size from mapper*********" + batchUnprocessedItems.size());
do {
if (batchUnprocessedItems.size() == 0) {
System.out.println("All items processed.");
} else {
System.out.println("Gathering unprocessed items...and retrying using batchWrite");
BatchWriteItemOutcome outcome = dynamoDB.batchWriteItemUnprocessed(batchUnprocessedItems);
System.out.println("After Retry...and retrying using batchWrite "
+ outcome.getUnprocessedItems().size());
batchUnprocessedItems = outcome.getUnprocessedItems();
System.out.println("Rerty done***********");
}
} while (batchUnprocessedItems.size() > 0);
}
System.out.println("end process");
}
Чтобы протестировать приведенный выше фрагмент кода, я сопоставил неверное имя таблицы в классе userPojo (которого нет в динамоDB )
Когда лог повторных попыток c выполняется, он выбрасывает com.amazon aws .services.dynamodbv2.model.ResourceNotFoundException: запрошенный ресурс не найден ( Сервис: AmazonDynamoDBv2; Код состояния: 400; Код ошибки: ResourceNotFoundException; Идентификатор запроса: xxxxxxxx) "
Согласно документации, если что-то не удалось, его следует вернуть в BatchWriteItemOutcome объект, но в моем случае это ошибка выдачи.
Я использую ниже зависимость Maven
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.11.748</version>
</dependency>