CosmosDB 429 出现在 Azure 门户中,但针对相同 collection/database 的 C# 代码未引发 429 异常

CosmosDB 429 appears in azure portal but c# code against same collection/database not raise 429 exception

在特定的给定时间点,如果我们针对我们的 cosmos db 帐户引用 azure 门户指标选项,它显示 429 发生了很多次,但是使用 cosmos sql sdk,即使是单次也不会抛出 429,因为 RU 为每次出现的 429/throttle 问题编写的扩展逻辑根本不会被触发。混淆是 throttle 是像 azure portal shows 那样发生的,还是投射了错误的数据。门户数据或 C# 代码行为应视为真实行为?如果门户网站是正确的,为什么 c# 代码没有提出同样的问题?有什么建议吗

异常捕获逻辑:

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

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);