azure - 如何重新触发 Azure Cosmos DB 中的 CosmosDBTrigger 事件或在处理事件时出现异常时获取触发的事件

标签 azure azure-cosmosdb azure-functions

我已经在 Cosmo DB 中使用 Azure 函数配置了 CosmosDBTrigger,但是一旦事件被触发,根据我的基本理解,它就会丢失,但是有没有办法存储触发事件,直到我的业务逻辑处理该事件。 我已阅读有关租赁收集的内容,但有关租赁收集的更多详细信息并未在触发器的上下文中给出。

有人可以帮助我像在 MQ 中那样存储触发器吗?

最佳答案

Lease 集合用于存储有关触发器当前所在更改源中位置的检查点,并帮助在触发器的多个实例之间分配负载。

如果具有触发器的 Azure 函数不等待业务层完成处理,您可以使用 EventHub、服务总线或存储队列来维护批处理标识符并跟踪状态。

触发器发送 IReadOnlyList<Document>到函数,它基本上是一个文档列表。您可以将其序列化为队列消息,添加与业务逻辑流程相关的标识符,然后使用另一个触发器(绑定(bind)到队列或事件中心或服务总线)来获取消息,根据业务检查批处理的状态如果需要的话进行逻辑和重试,或者如果完成则更新状态。

我认为主要的一点是避免瓶颈,如果触发器拾取的更改量(来自您的收集事件)很快,但您的业务逻辑速度较低,则中间队列可能会以更快的速度增长速率超出您的处理能力,但这取决于您的数据和场景的节奏。

关于azure - 如何重新触发 Azure Cosmos DB 中的 CosmosDBTrigger 事件或在处理事件时出现异常时获取触发的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781419/

相关文章:

Azure Cosmos DB - 创建容器时出现 'RequestDisallowedByPolicy' 错误

Azure存储队列/函数,仅从有害队列中出队一次

azure - Azure VM被黑,如何恢复数据?

mysql - Azure 数据工厂 - 连接到本地 Mysql,Linux 上的 protected 服务

Azure Functions 使用 Binder 更新 DocumentDb 文档

c# - 使用 azure 函数从 azure 存储表中检索数据

linux - 无法使用 CLI 将 Azure Function 发布到 Linux

java - Azure 上带有命令行参数的 Spring Boot 应用程序

azure - 如何为Azure网站配置缓存?

azure - 使用 Azure CosmosDB 容器将对象移动到不同状态