DocumentDBAttribute绑定如何响应限制?

Cam*_*art 1 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?
Run Code Online (Sandbox Code Playgroud)

第二种情况:

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

Mik*_*kov 6

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

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

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

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

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