首页 > 解决方案 > DocumentDBAttribute 绑定如何响应限制?

问题描述

我有使用 DocumentDBAttribute 绑定来读取和写入文档的天蓝色函数(C# v1 函数--非脚本)。在以下情况下,这些绑定如何响应限制?

这适用于函数 v1。

第一种情况:

        //input binding
        [DocumentDB(ResourceNames.APCosmosDBName, 
          ResourceNames.EpisodeOfCareCollectionName,
          ConnectionStringSetting = "APCosmosDB",
          CreateIfNotExists = true)] ICollector<EOC> eoc,
        //...
        eoc.Add(new EOC()); //what happens here if throttling is occuring?

第二种情况:

[DocumentDB(ResourceNames.ORHCasesDBName, ResourceNames.ORHCasesCollectionName, ConnectionStringSetting = "ORHCosmosDBCases", CreateIfNotExists = true, Id = "{id}")] string closedCaseStr,

标签: c#azure-functionsazure-cosmosdb

解决方案


输入和输出绑定都使用具有重试机制的 CosmosDB SDK。

默认情况下,SDK 会在一个限制的结果上重试 9 次,之后,异常冒泡,你的 Function 会出错。根据触发器类型,它将失败 HTTP 调用,将消息放回队列等。

重试遵循 Cosmos DB 返回的时间建议:

当客户端发送请求的速度超过允许的速率时,服务将返回 HttpStatusCode 429 (Too Many Request) 以限制客户端的速率。SDK 中的当前实现将等待服务告诉它等待的时间,并在该时间过去后重试。

目前,除了默认之外,无法使用其他策略配置绑定。


推荐阅读