繁体   English   中英

Azure Function 事件中心一次触发一批

[英]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-9843MughundhanRaveendran-MSFT提供的宝贵解释和一些解决方法。 将您的建议作为答案发布,以帮助其他社区成员。

  • 查看这篇文章,了解 maxBatchSize 的配置,为maxBatchSize拉取一批 1 条消息,以及传递单个事件与有序批次时降低成本的更好方法。

有没有办法让事件中心触发器等到第一批处理完毕?

  • 只要您发送事件并且它到达集线器,触发器 function 就会拉动它。 还有 azure function 并行度让事情变得更复杂。

我看到 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM