我在Cosmo DB中使用Azure功能配置了一个CosmosDBTrigger,但是一旦触发事件,它将根据我的基本理解而丢失,但有没有办法存储触发事件,直到我的业务逻辑处理事件。 我已阅读有关租赁收集的信息,但有关租赁收集的详细信息并未在Trigger的上下文中给出。
有人可以像我们在MQ中那样帮助我存储触发器。
答案 0 :(得分:2)
Lease集合用于存储有关Trigger当前所处的Change Feed中的位置的检查点,以及帮助在Trigger的多个实例之间分配负载。
如果具有触发器的Azure功能不等待业务层完成处理,则可以使用EventHub,Service Bus或Storage Queue来维护批处理标识符和跟踪状态。
触发器向函数发送IReadOnlyList<Document>
,该函数基本上是文档列表。您可以将其序列化为队列消息,添加与您的业务逻辑流程相关的标识符,然后使用另一个触发器(绑定到队列或EventHub或服务总线)来获取消息,根据业务检查批处理的状态如果需要,可以进行逻辑和重试,或者如果完成则更新状态。
我认为重点是避免瓶颈,如果Trigger(来自您的收集活动)获得的更改量很快但业务逻辑速度很低,则中间队列可能会更快地增长比你可以处理的速率,但它取决于你的数据和场景的节奏。
答案 1 :(得分:1)
考虑让Azure功能使用相关的有效负载向服务总线写入消息。然后有第二个函数来读取服务总线并处理有效负载,并为您提供所有熟悉的排队结构,如消息完成/放弃和交易字母队列。