Кто-нибудь сталкивался с этими проблемами, связанными с 429 при настройке вашего cosmosdb? Дайте мне знать ваше мнение о следующем:
Мы получили следующие исключения из документа db при добавлении ресурса в то время, когда мы получили 429 предупреждений. Это ожидаемые исключения или они связаны с чем-то другим? Есть идеи справиться с этим? Я уже добавил 3 повторных попытки, как указано ниже.
- Microsoft. Azure .Documents.RequestTimeoutException: истекло время ожидания запроса. - 616
- Microsoft. Azure .Documents.DocumentClientException: служба в настоящее время недоступна. - 38
Временной интервал (UT C): datetime (2020-01-06 08: 29: 35.0850244) и TIMESTAMP <= datetime (2020-01-06 17: 35: 16.5841001 ) </p>
Согласно сайту https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips: сервер превентивно завершит запрос RequestRateTooLarge (код состояния HTTP 429) и вернет заголовок x-ms-retry-after-ms, указывающий количество времени (в миллисекундах), в течение которого пользователь должен ждать перед повторной попыткой запроса.
HTTP Status 429,
Status Line: RequestRateTooLarge
x-ms-retry-after-ms :100
Все SDK неявно перехватывают этот ответ, уважают указанный сервером заголовок retry-after и повторяют запрос. Если к вашей учетной записи одновременно не обращаются несколько клиентов, следующая попытка будет успешной. Тем не менее, я уже добавил политику повторов в мой код с 3 повторениями с интервалом ожидания 1 секунда. Влияет ли эта повторная попытка на повторную попытку, выполняемую клиентом документов? Или он работает поверх повторных попыток, размещенных клиентом документов?
RetryManager.ExecuteWithRetry(
RetryPolicy.CreatePolicy(3, TimeSpan.FromSeconds(1)),
() =>
{
try
{
// call document client to add to cosmos
}
catch (DocumentClientException exception)
{
// retry
}
catch (Exception ex)
{
// retry
});
Текущий SDK, используемый в нашем коде:
<package id="Microsoft.Azure.DocumentDB" version="2.9.2" targetFramework="net452" />