在特定的给定时间点,如果我们针对我们的 cosmos db 帐户引用 azure 门户指标选项,它会显示 429 发生了很多次,但使用 cosmos sql sdk 编写的 C# 代码(对于相同的 cosmos db 帐户/数据库/集合),甚至不会抛出 429因为 RU 扩展为每次出现 429/节流问题而编写的逻辑根本不会被触发。令人困惑的是,节流是否像天蓝色门户显示的那样发生,或者它投射了错误的数据。门户数据还是 C# 代码行为,哪一个才是真实的?如果门户正确,为什么 c# 代码没有提出同样的问题?有什么建议请。
异常捕获逻辑:
catch (DocumentClientException ex)
{
if (ex.StatusCode == (HttpStatusCode)429)
{
//RU scale up logic
}
}
RetryOptions.MaxRetryAttemptsOnThrottledRequests
中定义。
如果您不希望 SDK 重试,可以将此值设置为 0,任何 429 都会被抛出到您的用户代码中:
ConnectionPolicy connectionPolicy = new ConnectionPolicy();
connectionPolicy.RetryOptions.MaxRetryAttemptsOnThrottledRequests = 0;
DocumentClient client = new DocumentClient(new Uri("service endpoint"), "auth key", connectionPolicy);