【问题标题】:How to guarantee at least once delivery with Azure Function with Cosmos DB trigger如何使用带有 Cosmos DB 触发器的 Azure Function 保证至少一次交付
【发布时间】:2018-10-18 15:15:14
【问题描述】:

我有一个用于 Azure 函数的 Cosmos DB 触发器。我想将传入文档中的一些数据展平并写入(Azure)SQL Server。

有什么方法可以保证至少一次交货?

我查看了https://hackernoon.com/reliable-event-processing-in-azure-functions-37054dc2d0fc,它在事件中心事件触发 Azure 函数的情况下提供了一些选项,但我不确定这是否同样适用于导致触发器触发的 CosmosDB 更改源。

在 Cosmos DB 更改提要网站 https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed 上声明:

对文档的每个更改在更改提要中只出现一次,并且客户端管理他们的检查点逻辑。更改提要处理器库提供自动检查点和“至少一次”语义。

这是否意味着它实现了与 Event Hub 中的检查点系统相同(或类似的东西)?

如果将熔断器模式应用于此 CosmosDB 触发器流到 Azure 函数的流程,如https://hackernoon.com/reliable-event-processing-in-azure-functions-37054dc2d0fc 末尾的详细说明,是否以相同的方式工作?

【问题讨论】:

  • 天蓝色存储队列和天蓝色服务总线队列都保证至少一次交付,因此在其中任何一个上发布消息并使用它异步处理它
  • 如果使用此选项,Azure 函数中的不成功交付将如何传达回服务总线?
  • 您必须将消息标记为成功或失败才能传达不成功的传递,但 Mikhail 的回答看起来比这个选项更好

标签: azure azure-functions azure-cosmosdb reliable-message-delivery


【解决方案1】:

Azure Functions Cosmos DB 触发器基于更改源处理器库。您至少会开箱即用。

【讨论】:

  • 如果出现重大的“非打嗝”类型的问题,并且在消息 105 上的 200 条消息中间,该功能会停止,然后在问题解决后重新启动,它会处理整个积压订单从 105 开始?
  • @kyarbles 如果这 200 个是一个批次的一部分,那么检查点将不会被保存,所以下次它会再次获得整个 200 个批次
  • 谢谢!是否有一些我可以参考的文档? Change Feed 处理器库,我看不到您刚才提到的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多