我想让我的队列每90分钟重试一次失败的and作业,并且只尝试3次。
在创建队列时,我使用以下代码
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
IRetryPolicy linearRetryPolicy = new LinearRetry(TimeSpan.FromSeconds(5400), 3);
queueClient.DefaultRequestOptions.RetryPolicy = linearRetryPolicy;
triggerformqueue = queueClient.GetQueueReference("triggerformqueue");
triggerformqueue.CreateIfNotExists();但是,在模拟失败的webjob尝试时,队列使用默认的重试策略。我遗漏了一些东西。
发布于 2015-02-18 07:15:52
我认为你可能在倒退着思考这个问题。队列实际上并不执行行为。相反,我猜您想要做的是让web作业配置为从队列中提取消息,然后如果由于某种原因无法处理队列中的消息,则让web作业在90分钟后重试。在这种情况下,您只需将不可见性超时设置为90分钟(默认值为30秒),这将确保如果消息未完全处理(同时调用了ie- GetMessage和DeleteMessage ),则消息将在90分钟后重新出现在队列中。
有关更多信息,请查看此Getting Started with Queue Storage文档。
发布于 2015-10-28 21:05:29
有一些类似Azure WebJobs SDK扩展和ErrorTriggerAttribute的东西(它在Nuget1.0.0-Beta1包中还没有提供,但你可以访问公共存储库)
公共静态空ErrorMonitor( ErrorTrigger("0:30:00",10,= "1:00:00") TraceFilter过滤器,TextWriter日志)
https://github.com/Azure/azure-webjobs-sdk-extensions#errortrigger
发布于 2017-07-14 01:30:32
当你向队列中添加一个项目时,你需要使用你的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);https://stackoverflow.com/questions/28558580
复制相似问题