¿Es así como yo uso el método de getUnprocessedKeys DynamoDBMapper.BatchGetItemException () para obtener una lista de las claves no procesados?

merputation:

Decir que tengo la siguiente POJO con los métodos y material necesario cargar con éxito y Guardar elementos en una tabla 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;
}

Estoy usando dynamoDBMapper.batchload (), por lo que necesito para tomar medidas si se produce la excepción. Nunca he trabajado con DDB antes, así que estoy seguro de lo que algunos de sus términos significan (por ejemplo, para GetKeys () : "Los principales valores de los atributos clave que definen los elementos y los atributos asociados a los elementos.").

Actualmente lo que quiero hacer es simplemente conseguir un poco de recogida (lista, juego, etc.) de las claves principales no elaborados. Es esta la forma correcta de hacerlo (no sé cómo me había prueba)?

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());
    ...
}
albogdano:

Puesto que usted está utilizando el más alto nivel de asignador de DynamoDB, que en realidad no necesita coger esa excepción. Puede especificar cómo se manejan las llaves sin procesar mediante el uso de una clase de estrategia de aplicación DynamoDBMapperConfig.BatchLoadRetryStrategy. Por defecto, el cliente utilizará el DynamoDB DefaultBatchLoadRetryStrategy.

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

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

El KeysAndAttributesclase se utiliza para construir una lista de elementos (especificando sus claves primarias) y atributos (las columnas de Fetch) de una tabla de DynamoDB. Es posible construir una instancia de esa clase como esta:

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

Básicamente, sólo se desee llamar getUnprocessedKeys()manualmente si se está trabajando con la API de nivel inferior para los artículos de carga en lotes.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=363021&siteId=1
Recomendado
Clasificación