2018-07-25T09:45:31.501995759Z { code: 429,
2018-07-25T09:45:31.502027060Z   body: '{"code":"429","message":"Message: {\\"Errors\\":[\\"Request rate is large\\"]}\\r\\nActivityId: 1fd09e95-0678-4897-87df-274766c0de82, Request URI: /apps/ab3e9d79-bfe5-4b09-8eb3-a5105669b87a/services/3a9a032c-5d0a-4069-8cf8-...../partitions/9e939522-f114-4e80-841c-...../replicas/131709419380466673p, RequestStats: , SDK: Microsoft.Azure.Documents.Common/2.0.0.0"}',
2018-07-25T09:45:31.502035360Z   activityId: '1fd09e95-0678-4897-87df-274766c0de82',
2018-07-25T09:45:31.502040161Z   substatus: 3200,
2018-07-25T09:45:31.502044461Z   retryAfterInMilliseconds: 7411 }

Я знаю, что вы тоже видели такую ​​проблему. Итак, позвольте мне дать вам несколько рекомендаций, как избежать этой проблемы.

Первый

Вам нужно знать об этой ошибке. Проблема говорит о том, что ваша коллекция превысила установленный предел пропускной способности. Повторите запрос после того, как сервер указал повторную попытку после продолжительности. Для получения дополнительной информации см. единицы запроса.

Если у вас есть несколько клиентов, совокупно работающих с превышением частоты запросов, поведение повтора по умолчанию может быть недостаточным, и клиент выдает приложению DocumentClientException с кодом состояния 429. В подобных случаях вам может потребоваться рассмотреть возможность обработки поведения и логики повторных попыток в процедурах обработки ошибок вашего приложения или увеличить пропускную способность, предоставленную для контейнера (или набора контейнеров).

Второй

По умолчанию DocumentClientException с кодом состояния 429 возвращается после совокупного времени ожидания в 30 секунд, если запрос продолжает работать с превышением скорости запроса. Это происходит даже в том случае, если текущее число повторных попыток меньше максимального числа повторных попыток, будь то значение по умолчанию 9 или значение, определенное пользователем. Дополнительная информация здесь https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips

Но вы можете изменить параметры по умолчанию с помощью SDK. В моем сценарии я использовал Node.js. (documentdb) - https://docs.microsoft.com/en-us/azure/cosmos-db/sql-api-nodejs-application

Итак, вам нужно создать такого клиента,

var docDbClient = new DocumentClient (result.EndpointUrl._, {

masterKey: result.PrimaryAuthorizationKey._,

}, {RequestTimeout: 180000, RetryOptions: {MaxRetryAttemptCount: 20}});

Последний

Последнее, что вы можете сделать, - это создать функцию для повторного запуска вашего метода. Вот пример, как это сделать,

функция executeNextWithRetry (обратный вызов)

{

documents.addItem (обратный вызов, функция (ошибка) {

если (ошибка && код ошибки === 429 && err.retryAfterInMilliseconds)

{

console.log (ошибка);

console.log («Ошибка при добавлении -» + JSON.stringify (callback));

console.log («Повторная попытка после« + err.retryAfterInMilliseconds);

setTimeout (function () {

executeNextWithRetry (обратный вызов);

}, err.retryAfterInMilliseconds);

}

});

}

Удачного кодирования…