2016-07-07 9 views
5

Mam funkcję Java, która aktualizuje element DynamoDB. Chcę obsłużyć przypadek, w którym aktualizacja nie zakończyła się powodzeniem z jakiegoś powodu. Mój kod wygląda mniej więcej tak:Jak mogę się dowiedzieć, czy aktualizacja lub wstawienie zakończyło się pomyślnie w dynamoDB przy użyciu Java SDK?

Table table = dynamoDB.getTable(tableName); 
AttributeUpdate att = new attributeUpdate(fieldName).put(value); 
UpdateItemOutcome outcome = table.updateItem(keyFieldName, keyValue, att); 

Wynikiem wywołania updateItem jest obiekt UpdateItemOutcome. Wszystko to ma postać getItem(), która powinna dostarczyć zwróconych atrybutów z operacji aktualizacji, oraz metodę getUpdateItemResult(), która dostarcza obiekt UpdateItemResult.

Funkcja getItem() nadaje mi wartość zerową, nawet jeśli połączenie się powiedzie. Obiekt UpdateItemResult nie ma żadnej metody, która zapewnia mi status lub błąd związany z operacją.

Czy ktoś wie, jaka jest najlepsza metoda sprawdzania wyników takich operacji w DynamoDB? Pytanie dotyczy także operacji putItem().

Dzięki!

Odpowiedz

3

W dokumentacji: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html

Use ReturnValues if you want to get the item attributes as they appeared either before or after they were updated. For UpdateItem, the valid values are: 

    NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This setting is the default for ReturnValues.) 

    ALL_OLD - If UpdateItem overwrote an attribute name-value pair, then the content of the old item is returned. 

    UPDATED_OLD - The old versions of only the updated attributes are returned. 

    ALL_NEW - All of the attributes of the new version of the item are returned. 

    UPDATED_NEW - The new versions of only the updated attributes are returned. 

There is no additional cost associated with requesting a return value aside from the small network and processing overhead of receiving a larger response. No Read Capacity Units are consumed. 

Values returned are strongly consistent 

Type: String 

Valid Values: NONE | ALL_OLD | UPDATED_OLD | ALL_NEW | UPDATED_NEW 

Required: No 

można zrobić:

UpdateItemSpec updateItemSpec = new UpdateItemSpec(); 
... 
updateItemSpec.withReturnValues(ReturnValue.ALL_NEW); 

Następnie UpdateItemOutcome będzie miał pola zaludnionych.

Jednak DynamoDB rzuci wyjątek, jeśli operacja aktualizacji lub instalacji zakończy się niepowodzeniem, więc jeśli chcesz tylko sprawdzić, czy operacja zakończyła się powodzeniem, uzyskanie zwracanych wartości nie jest konieczne.

+0

Dzięki, to by zadziałało bardzo dobrze. Już zacząłem po prostu wychwytywać wyjątki, ale jest to pełna odpowiedź. –

Powiązane problemy