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?
任何帮助将不胜感激。