2

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

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

4

1 回答 1

2

当 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
        });
}

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

于 2019-02-07T19:57:01.197 回答