0

在特定的给定时间点,如果我们针对我们的 cosmos db 帐户引用 azure 门户指标选项,它显示 429 发生了很多次,但是使用 cosmos sql sdk 编写的 c# 代码(对于相同的 cosmos db 帐户/数据库/集合),即使对于一次,因为 RU 为每次出现 429/节流问题编写的扩展逻辑根本不会被触发。令人困惑的是油门是像天蓝色的门户节目一样发生还是投射错误的数据。哪一个被认为是真实的,门户数据或 C# 代码行为?如果门户是正确的,为什么 c# 代码不会引发同样的问题?请有任何建议。

异常捕获逻辑:

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

1 回答 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);
于 2019-10-23T14:23:14.903 回答