【问题标题】:Azure WebJob QueueTrigger Retry PolicyAzure WebJob QueueTrigger 重试策略
【发布时间】:2015-02-17 09:27:37
【问题描述】:

我想让我的队列每 90 分钟重试一次失败的 webjobs,并且只重试 3 次。

创建队列时,我使用以下代码

        CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
        IRetryPolicy linearRetryPolicy = new LinearRetry(TimeSpan.FromSeconds(5400), 3);
        queueClient.DefaultRequestOptions.RetryPolicy = linearRetryPolicy;
        triggerformqueue = queueClient.GetQueueReference("triggerformqueue");
        triggerformqueue.CreateIfNotExists();

但是,当模拟失败的网络作业尝试时,队列使用默认的重试策略。 我错过了一些东西。

【问题讨论】:

    标签: azure azure-webjobssdk azure-storage-queues retrypolicy


    【解决方案1】:

    我想你可能会倒过来考虑这个问题。队列实际上并不执行行为。相反,我猜你想要做的是有一个配置为从队列中提取消息的 Web 作业,然后如果它由于某种原因无法处理来自队列的消息,则让 Web 作业在 90 分钟后重试。在这种情况下,您只需将隐身超时设置为 90 分钟(默认为 30 秒),这将确保如果消息未完全处理(即 - GetMessage 和 DeleteMessage 都被调用),那么消息将重新出现在90 分钟后排队。

    查看此Getting Started with Queue Storage 文档以获取更多信息。

    【讨论】:

    • 感谢您的回复。失败的网络作业之间延迟的原因是在非洲,我们通常会遇到停电。这些通常持续正负 2 小时,在此期间我们面向公众的服务器关闭。因此,为了提高交付概率,我们选择了 Azure 存储队列。我在这个例子中遵循了Azure example,他们演示了 webjob sdk,我没有看到 webjob 中消息的句柄,这将允许我设置不可见性。
    • 查看[类似问题] (stackoverflow.com/questions/26937782/…) 没有答案
    【解决方案2】:

    Azure WebJobs SDK Extensions 和 ErrorTriggerAttribute 之类的东西(在 nuget 1.0.0-beta1 包中尚不可用,但您可以访问公共存储库)

    公共静态无效错误监视器( [ErrorTrigger("0:30:00", 10, Throttle = "1:00:00")] TraceFilter 过滤器, TextWriter 日志)

    https://github.com/Azure/azure-webjobs-sdk-extensions#errortrigger

    【讨论】:

      【解决方案3】:

      当您将项目添加到队列时,您需要使用您的 RetryPolicy,而不是队列本身,例如。

      var queue = queueClient.GetQueueReference("myQueue");
      queue.CreateIfNotExists();
      
      options = new QueueRequestOptions { RetryPolicy = linearRetryPolicy };
      await queue.AddMessageAsync(yourMessage, null, new TimeSpan(0, delayMinutes, 0), options, null);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多