CosmosDB 429 出现在 Azure 门户中,但针对同一集合/数据库的 C# 代码不会引发 429 异常

问题描述 投票:0回答:1

在特定的给定时间点,如果我们针对我们的 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
                    }
                }
azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.