我有azure函数(C#v1函数 - 非脚本化),它们使用DocumentDBAttribute绑定来读取和写入文档。在以下情况下,这些绑定如何响应限制?
这适用于函数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,
答案 0 :(得分:6)
输入和输出绑定都使用具有retry mechanism的CosmosDB SDK。
默认情况下,SDK会在受限制的结果上重试9次,之后会出现异常,并且您的函数会出错。根据触发器类型,它将使HTTP调用失败,将消息放回队列等。
重试遵循Cosmos DB返回的时间建议:
当客户端发送的请求速度超过允许的速率时,服务将返回HttpStatusCode 429(Too Many Request)以对客户端进行速率限制。 SDK中的当前实现将等待服务告诉它等待的时间,并在时间结束后重试。
目前,无法使用默认值以外的策略配置绑定。