gpt4 book ai didi

java - 这是我使用 DynamoDBMapper.BatchGetItemException 的方法 getUnprocessedKeys() 获取未处理键列表的方式吗?

转载 作者:行者123 更新时间:2023-11-30 05:19:26 25 4
gpt4 key购买 nike

假设我有以下 POJO,其中包含成功加载项目并将其保存到 DDB 表中所需的方法和内容:

@DynamoDBTable(tableName = "my_ddb_table")
public class MyDDBTableItem {

@DynamoDBHashKey(attributeName="id")
private String id; // primary key
private String a_value;
private Set<String> some_values;
}

我正在使用dynamoDBMapper.batchload(),所以如果抛出异常我需要采取行动。我以前从未使用过 DDB,因此我不确定其中一些术语的含义(例如 getKeys():“定义项目以及与项目关联的属性的主键属性值。”)。

我目前想做的只是获取未处理主键的一些集合(列表、集合等)。这是正确的方法吗(我不知道如何测试它)?

try {
dynamoDBMapper.batchload(itemsToGet)...
} catch (BatchGetItemException e) {
// I could get them as strings or as the instances of the class MyDDBTableItem, but I'll use String here.
List<String> unprocessedKeys = e.getUnprocessedKeys()
.get("my_ddb_table")
.getKeys() // after this is where I am unclear.
.stream()
.map(map -> map.get("id").getS())
.collect(Collectors.toList());
...
}

最佳答案

由于您使用的是更高级别的 DynamoDB 映射器,因此您实际上不需要捕获该异常。您可以使用实现 DynamoDBMapperConfig.BatchLoadRetryStrategy 的策略类来指定如何处理未处理的 key 。默认情况下,DynamoDB 客户端将使用 DefaultBatchLoadRetryStrategy .

// TODO: implement the strategy interface
BatchLoadRetryStrategy myCustomStrategy = ...;

dynamoDBMapper.batchLoad(itemsToGet, new DynamoDBMapperConfig.Builder().
withBatchLoadRetryStrategy(myCustomStrategy))

KeysAndAttributes 类用于从 DynamoDB 表构建项目列表(通过指定其主键)和属性(要获取哪些列)。您可以像这样构造该类的实例:

KeysAndAttributes kna = new KeysAndAttributes().withKeys(keysToLoad);

基本上,如果您使用较低级别的 API 来批量加载项目,则只需手动调用 getUnprocessedKeys()

关于java - 这是我使用 DynamoDBMapper.BatchGetItemException 的方法 getUnprocessedKeys() 获取未处理键列表的方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59798510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com