DynamoDB: несколько вызовов TransactWriteItems с одним и тем же ClientRequestToken для идемпотентности - PullRequest
0 голосов
/ 07 марта 2020

читая на это , я немного запутался в поддержании идемпотента при вызове TransactWriteItems с ClientRequestToken. Например, если I:

string requestToken = "abc123";
var result1 = await dbClient.TransactWriteItemsAsync(new TransactWriteItemsRequest
              {
                 TransactItems = list1,
                 ClientRequestToken = requestToken
              });

var result2 = await dbClient.TransactWriteItemsAsync(new TransactWriteItemsRequest
              {
                 TransactItems = list2,
                 ClientRequestToken = requestToken
              });

Если result2 не удалось, он также вернет первый TransactWriteItemsAsync в result1?

1 Ответ

0 голосов
/ 08 марта 2020

Каждая dbClient.TransactWriteItemsAsync - это собственная транзакция, состоящая из списка TransactWriteItem с, инкапсулированного в TransactWriteItemsRequest

Так что result1 и result2 - две разные транзакции. Совместное использование ClientRequestToken не идеально, так как используется идемпотентности. Поэтому, если result1 выполнено, result2 будет проигнорировано.

ClientRequestToken может использоваться, например, для повторной попытки

var result1 = await dbClient.TransactWriteItemsAsync(new TransactWriteItemsRequest
              {
                 TransactItems = list1,
                 ClientRequestToken = requestToken
              });

. Если по какой-либо причине этот вызов не удался, можно повторить попытку, учитывая, что вы используете тот же токен.

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