我正在使用一个从队列中触发的持久函数。我正在将队列中的消息发送到一个非常不稳定的服务,所以我设置了 RetryPolicy。即使如此,即使最大重试次数已经用尽,我也希望能够看到失败的消息。
我是否需要手动将它们扔到死信队列中(如果是这样,我不清楚我如何知道消息何时重试了任意次数),或者该函数是否会自然地将它们扔到某种死信队列中- 信件/毒药队列?
我正在使用一个从队列中触发的持久函数。我正在将队列中的消息发送到一个非常不稳定的服务,所以我设置了 RetryPolicy。即使如此,即使最大重试次数已经用尽,我也希望能够看到失败的消息。
我是否需要手动将它们扔到死信队列中(如果是这样,我不清楚我如何知道消息何时重试了任意次数),或者该函数是否会自然地将它们扔到某种死信队列中- 信件/毒药队列?
当 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
});
}
唯一重试更改是处理瞬态错误(因此您不必在每次遇到例如网络问题时都启用安全路由)。