当侦听.NET应用程序中的更改供稿更改时,在集合上的高使用高峰期间,对CosmosDB的请求可能会受到限制(HTTP响应429)。

.NET有3种CosmosDB更改供稿客户端:

  • 原文: Microsoft.Azure.DocumentDB.ChangeFeedProcessor v1.x
  • 它的v2.x successor与API兼容,但代码变化很大。
  • 当前实现是 Microsoft.Azure.Cosmos v3
  • 的一部分

    这些版本中的哪一个(如果有)支持插入错误处理的方式(以发出有关其的自定义遥测)?

    原始库在内部实现了对HTTP 429的重试,而我无法找到挂接到重试机制的方法。

    最佳答案

    在延迟或速度方面,这些库没有SLA或保证。因为延迟或速度还受您用来处理这些更改的代码以及部署它的基础架构(以及位置和网络延迟)的影响,

    唯一的保证是,只要容器可用且具有足够的预配置吞吐量以服务请求,就可以“至少一次”交付更改。

    这意味着变更提要处理器将始终保持重试,以尽力保证交付变更。如果容器受到限制,它将继续尝试直到成功。无法保证您需要多长时间才能获得更改。

    Cosmos DB服务在返回429(Throttle)时会返回一个 header ,该 header 指示何时需要重试该请求,因此更改提要处理器将遵循此等待时间并重试。

    如果请求是遥测技术(可在Azure Diagnostics上找到),则可以在其中查看 throttle ,甚至可以由用户代理过滤以识别哪个应用程序正在接收它们。

    关于error-handling - 在.NET ChangeFeed客户端库中检测限制(HTTP 429),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59935118/

    10-10 03:01