我正在尝试为云队列实现线性重试策略。以前,我以编程方式管理每个出队的重试逻辑,但我看到 QueueRequestOptions 上的 RetryPolicy 成员,并认为我可以在第一次添加时设置重试策略,并让云队列自动管理重试。不幸的是,下面的代码似乎没有做任何事情。它仍然几乎立即重试,并且重试了 5 次。我尝试过在创建时设置它,但它也不起作用。
我错过了什么?
谢谢!
await cloudQueue.CreateIfNotExistsAsync();
var linearRetryPolicy = new LinearRetry(TimeSpan.FromMinutes(5), 1);
var options = new QueueRequestOptions { RetryPolicy = linearRetryPolicy };
await cloudQueue.AddMessageAsync(new CloudQueueMessage(JsonConvert.SerializeObject(queueItem)), null, null, options, null);
最佳答案
我向一位同事询问了此事,他建议重试策略可能与尝试将消息添加到队列有关,而不是与尝试处理队列中的消息有关。
我通过实现 IRetryPolicy 并在调用 AddMessageSync 之前禁用存储模拟器来对此进行测试。果然,每次尝试将消息添加到队列失败后,ShouldRetry 都会被调用。
希望这对有类似困惑的人有所帮助。
关于c# - Azure Functions CloudQueue AddMessageAsync QueueRequestOptions LinearRetryPolicy 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55115382/