CosmosDB 429 появляется на портале Azure, но код c # для той же коллекции / базы данных не вызывает исключение 429 - PullRequest
0 голосов
/ 23 октября 2019

В конкретный данный момент времени, если мы сопоставим параметр метрики портала Azure с нашей учетной записью cosmos db, он покажет, что 429 происходило много раз, но код c # (для той же учетной записи / базы данных / коллекции cosmos db) с использованием cosmos sql sdk, а не броска429 даже на одно время, потому что логика увеличения масштаба RU, записанная для каждого случая проблемы 429 / throttle, вообще не запускается. Путаница заключается в том, произошел ли дроссель, как показывает портал Azure, или он проецирует неверные данные. Какой из них следует считать истинным, данные портала или поведение кода C #? Если портал работает правильно, почему код C # не поднимает ту же проблему? любые предложения, пожалуйста.

логика перехвата исключения:

 catch (DocumentClientException ex)
                {
                    if (ex.StatusCode == (HttpStatusCode)429)
                    {
                        //RU scale up logic
                    }
                }

1 Ответ

0 голосов
/ 23 октября 2019

SDK будет повторяться автоматически после получения 429 до количества раз, определенного в RetryOptions.MaxRetryAttemptsOnThrottledRequests.

Если вы не хотите, чтобы SDK повторил попытку, вы можетеустановите это значение в 0, и любые 429 будут брошены в ваш код пользователя:

ConnectionPolicy connectionPolicy = new ConnectionPolicy();
connectionPolicy.RetryOptions.MaxRetryAttemptsOnThrottledRequests = 0;
DocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key", connectionPolicy);
...