Ich würde gerne verstehen, wie Sie am besten eine Wiederholung/Backoff-Stratergy für Cosmos db (Documentdb) zu implementieren. Ich verstehe, dass es einige Standardwiederholungs Mechanik in die sdk gebaut, die ich im connectionpolicy wie so ändern können:Retry Policy in Cosmos DB
RetryOptions = new RetryOptions() { MaxRetryAttemptsOnThrottledRequests = 3, MaxRetryWaitTimeInSeconds = 60 }
Aber ich bin nicht sicher, wie dass die Auswirkungen, wie ich sollte Ausnahmemanagement tun.
Derzeit mache ich folgendes:
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);
}
}
}
}
DO Ich brauche diese Wiederholungs zu tun? und wenn ich die Ausnahme abfängt, stoppt das die Standardwiederholversuche? Wie lauten die Standardwiederholversuche? ist es nur 429? Wenn ja, müsste ich den Fehlercode 449 manuell behandeln?
Eine Hilfe wird sehr geschätzt.