azure - 使用持久函数中的重试选项,最后一次尝试后会发生什么?

标签 azure azureservicebus dead-letter azure-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
        });
}

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

关于azure - 使用持久函数中的重试选项,最后一次尝试后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54581074/

相关文章:

php - 多个用户访问同一个数据库表

Azure 事件中心多个收件人

azure - 为什么 Azure Devops 管道无法连接到我的 Python/Linux 函数应用程序?

c# - Azure Function ServiceBusReceivedMessage ApplicatonProperties 为空

java - 无法在类 org.apache.camel.builder.DeadLetterChannelBuilder 上找到属性描述符 useOriginalBody

git - 有没有办法使用 AZ CLI 扩展查询与 GIT 存储库关联的所有分支?

c# - Azure函数读取appsetting.json

azure - 当消息到达 Azure Servicebus 中的死信队列时,如何设置警报

rabbitmq - RabbitMQ 中的死信死信消息

java - 处理死信队列的配置