Azure WebJob队列触发器重试策略

Azure WebJob队列触发器重试策略,azure,azure-webjobssdk,azure-storage-queues,retrypolicy,Azure,Azure Webjobssdk,Azure Storage Queues,Retrypolicy,我希望每90分钟重试一次队列失败的webjobs,并且仅重试3次 创建队列时,我使用以下代码 CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); IRetryPolicy linearRetryPolicy = new LinearRetry(TimeSpan.FromSeconds(5400), 3); queueClient.DefaultRequest

我希望每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();
但是,当模拟失败的webjob尝试时,队列使用默认重试策略。
我想我错过了什么

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


有关更多信息,请参阅此文档

有类似Azure WebJobs SDK扩展和ErrorTriggerAttribute的东西(它在nuget 1.0.0-beta1包中还不可用,但您可以访问公共存储库)

公共静态无效错误监视器( [ErrorTrigger(“0:30:00”,10,Throttle=“1:00:00”)]TraceFilter过滤器, 文本编写器(日志)


将项目添加到队列时,需要使用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);

谢谢你的回复。两次失败的网络作业之间出现延迟的原因是在非洲,我们通常会经历停电。这些通常持续正负2小时,在此期间,我们面向公众的服务器关闭。因此,为了提高交付概率,我们选择了azure存储队列。在本例中,我遵循了他们演示的webjob sdk,但我在webjob中没有看到允许我设置不可见性的消息句柄。请参见[类似问题](),没有答案