我希望我的队列每 90 分钟重试一次失败的网络作业,并且仅重试 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分钟后排队。
看看这个 Getting Started with Queue Storage文档以获取更多信息。
关于Azure WebJob QueueTrigger 重试策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558580/