DocumentDBAttribute绑定如何响应限制?

时间:2018-06-13 20:38:00

标签: c# azure-functions azure-cosmosdb

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

  • 通过将项目添加到ICollector
  • 来编写项目
  • 通过提供ID
  • 来阅读项目

这适用于函数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,

1 个答案:

答案 0 :(得分:6)

输入和输出绑定都使用具有retry mechanism的CosmosDB SDK。

默认情况下,SDK会在受限制的结果上重试9次,之后会出现异常,并且您的函数会出错。根据触发器类型,它将使HTTP调用失败,将消息放回队列等。

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

  

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

目前,无法使用默认值以外的策略配置绑定。