繁体   English   中英

Azure 作为消息队列的持久函数

[英]Azure Durable Functions as Message Queue

我有一个无服务器 function 接收订单,每天大约 30 个。 这个 function 依赖于第三方 API 来执行一些额外的查找和检查。 但是,这个外部端点不是 100% 可靠,如果另一个 API 在几个小时(或更长时间......)内不可用,我需要能够存储订单请求。

我最初的想法是将 function 分成两部分,第一部分将接收订单,进行一些初始检查,例如验证订单,然后将请求发布到消息队列或发布/订阅系统中。 另一方面,有一个消费者读取订单并尝试执行 API 请求,如果 API 不可用,订单将被发送回队列。

然而,有人建议我简单地使用 Azure 持久 Function 来处理请求,并将当前积压存储在 function state 中,使用聚合器模式(特别是因为 API 将在 99.99..% 的时间内工作)。 这将使架构更简单。

使用一个比另一个有什么优点/缺点,我是否遗漏了任何重要的考虑因素? 如果您有任何见解或其他建议,我将不胜感激。 让我知道是否需要其他信息。

您可以使用 Durable Task Framework 或 Azure 存储或服务总线队列来解决此问题,但在您的事务量下,我认为这会使解决方案过于复杂。

如果您每天要处理约 30 个订单,请考虑一种更简单的解决方案:

  • 使用Polly ,这是一个得到良好支持的弹性和容错框架。
  • 将请求信息写入您的数据库。 偶尔读取 Azure Function 计时器触发器并完成处理未标记为完成的订单。

当您的工作量很大时,Durable Task Framework 非常有用。 但是这个框架有一个不平凡的学习曲线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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