私は、cosmos db(documentdb)のリトライ/バックオフストラテジをどのように実装するのが最適かを理解したいと思います。 私はそうのようにConnectionPolicyに変更することができSDKに組み込まれているいくつかのデフォルトの再試行の力学があることを理解する:Cosmos DBのリトライポリシー
RetryOptions = new RetryOptions() { MaxRetryAttemptsOnThrottledRequests = 3, MaxRetryWaitTimeInSeconds = 60 }
しかし、私はわからないどのように私は例外管理を行う必要がありますどのように影響を与えています。
は現在、私は次のことをやっている:
GetAsync<T>(Uri, Id) {
try {
ResourceResponse<Document> response = await client.ReadDocumentAsync(URiFactory.CreateDocumentUri(uri), new RequestOptions { PartitionKey = new PartitonKey(convert.ToInt64(id)) }).ConfigureAwait(false);
}
catch(DocumentClientException ex) {
if(ex.StatusCode == (HttpStatusCode)TooManyRequests) {
await Task.Run(async() =>
{
await Task.Delay(ex.RetryAfter);
return await GetAsync<T>(Uri, Id).ConfigureAwait(false);
}
}
}
}
私はこの再試行を行う必要がありますか?私が例外をキャッチした場合、デフォルトの再試行が中止されますか?また、デフォルトの再試行の試行はどのくらいですか?すなわちそれはちょうど429ですか?もしそうなら、手動でエラーコード449を処理する必要がありますか?
助けていただければ幸いです。