当前位置: 首页 > 知识库问答 >
问题:

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

向嘉誉
2023-03-14

在特定的给定时间点,如果我们针对我们的cosmos db帐户引用azure门户指标选项,它会显示429发生了很多次,但使用cosmos sql sdk编写的c#代码(对于相同的cosmos db帐户/数据库/集合),即使是单次也不会抛出429,因为为每次发生429/throttle问题而编写的RU放大逻辑根本没有被触发。困惑的是油门是像azure门户显示的那样发生的,还是它投影了错误的数据。哪个是真的,门户数据还是c#代码行为?如果门户是正确的,为什么c#代码没有引发相同的问题?请提出任何建议。

异常捕获逻辑:

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

共有1个答案

楚洋
2023-03-14

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);
 类似资料:
  • 问题内容: 我在接口抛出异常的地方读了这段代码,但是实现它的类却没有抛出异常或捕获异常,这是为什么呢?在Java中合法或安全吗? 问题答案: 实现和扩展的一般规则是,您可以使新类或接口的限制较少,而不能限制较多。如果您认为将异常作为限制进行处理的要求,则未声明异常的实现的限制性较小。对该接口进行编码的任何人都不会遇到您的课的麻烦。 -斯坦·詹姆斯 作为http://www.coderanch.co

  • 我的类有一个名为的私有对象,其构造函数需要另一个类的实例。 如果失败,如何引发异常?

  • 本文向大家介绍Django 在代码中指定不同的数据库,包括了Django 在代码中指定不同的数据库的使用技巧和注意事项,需要的朋友参考一下 示例 普通方法将使用默认数据库,或者,如果使用数据库路由器,它将使用中指定的数据库。您可以使用以下方法覆盖它:obj.save()db_for_write 同样,为了阅读:            

  • 问题内容: 以下Java代码按预期抛出: 但是以下示例仅在的内容上有所不同,执行时没有任何例外: 打印输出“ [lalala]”。为什么在第一个示例执行时第二个示例却不抛出? 问题答案: 简短答案 因为不能保证迭代器的快速失败行为。 长答案 之所以会出现此异常,是因为除非通过迭代器,否则无法在迭代集合时操作集合。 坏: 好: 现在转到“为什么”:在上面的代码中,请注意如何执行修改检查- 删除操作将

  • 我在使用Azure云服务时遇到了瓶颈问题。该服务过去工作正常,基本上它所做的就是将Azure存储帐户中的信息存储到Azure数据库中。上个月没有数据加载到Azure数据库中,服务有一段时间没有更改,数据库没有锁定问题,但当我尝试检查我的存储帐户时,它在新的Azure门户中不可用,但在旧门户中不可用,从旧门户我没有与新门户相同的选项。指标是可以的,但是我遇到的这个瓶颈问题,数据加载可能与新门户中丢失

  • 我们有一个多模块Maven项目,并使用JaCoCo进行代码覆盖率分析。我准备了文件来运行测试用例并获取代码覆盖率。 下面是我的,添加了JaCoCo和其他插件,并且在Azure Devops构建中,在Maven任务中传递命令,尝试,参数在中定义。 我在日志中看到以下细节。 Maven日志: 分析完成日志: 测试运行: 目标:“清洁验证声纳:声纳” 选项:'-dsonar.projectkey=**-