Je voudrais comprendre la meilleure façon de mettre en œuvre une straté- gie de réessai/backoff pour db cosmos (documentdb). Je comprends qu'il ya des mécanismes de relance par défaut intégré dans le sdk que je peux changer dans le connectionpolicy comme ceci:Réessayer la stratégie dans Cosmos DB
RetryOptions = new RetryOptions() { MaxRetryAttemptsOnThrottledRequests = 3, MaxRetryWaitTimeInSeconds = 60 }
Cependant, je ne sais pas comment que les impacts que je dois faire la gestion des exceptions.
Actuellement, je fais ce qui suit:
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);
}
}
}
}
dois-je faire nouvelle tentative? et si j'attrape l'exception cela arrête-t-il les tentatives de tentative par défaut? De plus, quelles sont les tentatives de tentative par défaut? c'est-à-dire seulement 429? Si oui, est-ce que je devrais manipuler le code d'erreur 449 manuellement?
Toute aide serait grandement appréciée.