使用事件中心触发器处理事件的持久函数或 Azure 函数

问题描述 投票:0回答:1

我们有以下设置:

Event Hub —-> Azure Function —> API.

我们正在尝试使用 Event Hub 提出死字解决方案。事件中心不附带 Dead Lettering,因此我们需要构建自己的解决方案。

我们想出了两个选项:

  1. 带有事件中心触发器的 Azure 函数,将有 try catch 块,它确实有一个重试策略来调用 Api,如果在所有尝试后调用失败,我们将存储事件,元数据(事件的偏移量)在天蓝色表存储,以便我们可以使用 DLQ 重新处理器从表存储中重新处理此事件。

  2. 带有事件中心触发器的持久功能。将具有编排器和活动功能。如果处理事件因错误而失败,我们可以重试活动函数,因为它已经持久化了。

我想知道这里哪个选项更好。我无法理解持久函数的确定性政策是如何在这里发挥作用的。

我们尝试了选项 1,感觉我们正在 Azure 存储中构建状态机。我们期待内置的 azure 持久函数是否能帮助我们处理死字和弹性。

azure-functions azure-eventhub azure-durable-functions dead-letter
1个回答
0
投票

您的两个选项在核心上都是相同的实现,除了 Durable Functions 具有您已经需要的一切这一事实。

这里有一些可以帮助您使用持久功能设置一切的东西

1。利用具有活动功能的自动重试
这将确保即使出现间歇性问题,每个编排的第一次运行也能完成。

2。在 Instance Management APIs
之上构建 Dead Lettering 由于总是有可能出现其他问题并需要修复(这就是您问这个问题 🙂 的原因),Durable Functions 已经附带了 API,允许您查询失败的实例并按需重新运行它们。

根据您的场景,您可以按计划或事件调用这些 API。

3。如果需要,请使用 Netherite 存储提供程序
根据应用程序的规模,您可以考虑使用此存储提供程序而不是默认的 Azure 存储提供程序。

但在采取行动之前,您可能需要评估转换的规模和成本效益。您可以在他们的官方文档中阅读有关该引擎的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.