如果 Azure 函数失败,则重试 Azure 服务总线消息

Retrying Azure Service Bus message if the Azure Function fails

我将在大多数服务都在在线的遗留系统中引入 A​​zure 服务总线A​​zure 函数预置数据中心。 ASB 将收到一个名为 CC_SUBMITTED 的事件,并且将为该事件触发名为 PaymentService 的 Azure 函数。

A​​zure 函数 中的业务逻辑可能因数据错误而失败,或者函数中的第三方服务调用可能return 出现异常。如果错误在数据中,将手动修复数据并重新运行逻辑。

如果失败,我是否应该将事件 CC_SUBMITTED 从 Azure Function PaymentService 发送回 ESB重新处理消息? Azure 服务总线中是否有重试消息的内置功能?

Is there any built-in feature in Azure Service Bus to retry the message?

不在 Azure 服务总线中,但这是通过函数处理的。如果函数因错误而失败,消息将发送回服务总线,然后在一段时间后重试。将重复该过程,直到函数成功执行或消息为死信。

Should I send the event CC_SUBMITTED back to the ESB from the Azure Function PaymentService if there is a failure to reprocess the message?

通常不会,但在您的情况下我会说是。我之所以说是,是因为根据您在 post 中提供的信息,该过程通常会因数据问题而失败,并且需要对数据进行一些手动更正。因此,如果我们知道只有在数据被更正后它才会成功,那么继续重试该操作是没有意义的。

但是,如果操作因暂时性错误而失败,那么函数中的 in-built 重试机制应该能够处理。