繁体   English   中英

使用消息队列绑定时如何处理Azure Function重跑?

[英]How to handle an Azure Function rerunning when using message queue binding?

我有一个 v1 Azure Function,它是由写入 Azure 存储消息队列的消息触发的。

Azure Function需要对SharePoint进行多次更新在线。 这些操作有时会失败。 这会导致消息返回到队列并重新处理。

我在开发function的时候,并没有考虑到可能部分完成然后重启。 我做了一些研究,听起来我需要修改它才能重新进入。

是否有我应该遵循的设计模式来满足这一点,而不必添加大量检查来确定先前的执行是否已经执行了操作? 或者,是否有任何 Azure 功能可以提供帮助(除了现有的消息重试和毒队列)

听起来您需要进行一些重新设计。 我们的团队遇到了类似的问题,并在几年前编写了一个本土解决方案。 但我们最终放弃了我们的解决方案并使用了Azure Durable Functions

不会说谎 - 这个框架有一些复杂性,我花了一点时间来理解它。 查看 function 链接模式。

我们的处理需要多个步骤,所有步骤都必须完成。 我们跨越多个数据存储(更新 Cosmos Db、Azure SQL、Blob 存储等),因此不支持跨多个 PaaS 产品的分布式事务。 Durable Functions 可让您将流程分解为离散的步骤。 如果某个步骤失败,编排器将根据重试策略重新运行该步骤。

所以简而言之,我们使用 Durable Task Activity 函数来尝试每个步骤。 如果由于我们认为是暂时性错误而导致该步骤失败,我们将重试。 如果这是一个不可恢复的错误,我们不会重试。

暂无
暂无

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

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