[英]Azure Function Event Hub Trigger one batch at a time
我正在开发一个通过事件中心获取更改通知的项目( https://learn.microsoft.com/en-us/graph/change-notifications-delivery )。
我的 Azure Function(Event Receiver) 批量接收事件。 收到每批数据后,它会处理数据(做一些工作)。 第二批更新第一批设置的值。
事件中心有 3 个分区。
当多个批次同时到达时会出现问题。 . 第二批在第一批更新值之前进来。
有没有办法一次只接收一批?
我不关心批次的顺序,但我想在处理完第一批后才触发下一批。
提前致谢。
感谢BrunoLucas-9843和MughundhanRaveendran-MSFT提供的宝贵解释和一些解决方法。 将您的建议作为答案发布,以帮助其他社区成员。
- 查看这篇文章,了解 maxBatchSize 的配置,为
maxBatchSize
拉取一批 1 条消息,以及传递单个事件与有序批次时降低成本的更好方法。
有没有办法让事件中心触发器等到第一批处理完毕?
- 只要您发送事件并且它到达集线器,触发器 function 就会拉动它。 还有 azure function 并行度让事情变得更复杂。
- 我能想到的最好的方法是编写这样的方法: https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-do.net-standard-getstarted-send#receive-events和使用计时器触发器每隔“X”分钟将其拉动一次,即处理一整批所需的平均时间(加上一些额外的时间以确保它全部清除)。
我看到 azure 集线器的逻辑应用程序触发器可以一次拉取固定数量的事件并等待:
https://learn.microsoft.com/zh-cn/azure/connectors/connectors-create-api-azure-event-hubs#trigger-polling-behavior
此外,您可以尝试将基数设置为 function.json 中的一个,并在最后测试它。 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs-trigger?tabs=csharp#configuration
是否可以使用 Durable Function 实现顺序处理?
是的,通过利用上述建议的方法,也可以使用持久和正常的 azure 函数。 对于持久函数,您可以使用函数链接: https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp#chaining 。
在持久函数中,有编排器和活动函数,如果活动 function 之一失败,它将向编排器返回错误响应。 整个实例不会失败,你将能够处理异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.