2
我想了解如何最好地實現cosmos db(documentdb)的重試/退避策略。 我明白,有內置於SDK中一些默認的重試機制,我可以在connectionpolicy這樣修改:宇宙重試策略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?
任何幫助將不勝感激。