要解决Cosmos DB 429错误消息,您需要使用Task.Delay方法而不是Task.Sleep方法。在使用SDK时,您可以执行以下操作:
using (DocumentClient client = new DocumentClient(new Uri(endpointUrl), primaryKey))
{
while (true)
{
try
{
await client.ReadDatabaseAsync(UriFactory.CreateDatabaseUri(databaseId));
break;
}
catch(DocumentClientException de)
{
if (de.StatusCode != HttpStatusCode.TooManyRequests)
{
throw;
}
await Task.Delay(de.RetryAfter);
}
}
}
上面的代码演示了如何读取数据库时处理429错误。如果遇到此错误,将等待指定的时间(在de.RetryAfter属性中提供)使用Task.Delay。尝试读取数据库每次失败时,都会重试直到成功或另一个错误发生(并引发异常)。