【问题标题】:With the retry options in durable functions, what happens after the last attempt?使用持久函数中的重试选项,最后一次尝试后会发生什么?
【发布时间】:2019-07-02 00:38:05
【问题描述】:

我正在使用一个从队列中触发的持久函数。我正在将队列中的消息发送到一个非常不稳定的服务,因此我设置了 RetryPolicy。尽管如此,我希望能够看到失败的消息即使最大重试次数已用尽。

我是否需要手动将它们扔到死信队列(如果是这样,我不清楚我如何知道消息何时重试了任意次数),或者该函数是否会自然地将它们扔给一些那种死信/毒药队列?

【问题讨论】:

    标签: azure azureservicebus dead-letter azure-durable-functions


    【解决方案1】:

    当 Durable Functions 中的活动失败时,异常会被编组回编排,并抛出 FunctionFailedException。无论您是否使用自动重试都没关系 - 最后,整个活动都会失败,由您来处理这种情况。根据文档:

    try
    {
        await context.CallActivityAsync("CreditAccount",
            new
            {
                Account = transferDetails.DestinationAccount,
                Amount = transferDetails.Amount
            });
    }
    catch (Exception)
    {
        // Refund the source account.
        // Another try/catch could be used here based on the needs of the application.
        await context.CallActivityAsync("CreditAccount",
            new
            {
                Account = transferDetails.SourceAccount,
                Amount = transferDetails.Amount
            });
    }
    

    唯一的重试更改是处理瞬时错误(因此您不必每次遇到网络问题时都启用安全路由)。

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2015-01-01
      相关资源
      最近更新 更多