c# - Azure Functions CloudQueue AddMessageAsync QueueRequestOptions LinearRetryPolicy 不执行任何操作

标签 c# azure azure-functions

我正在尝试为云队列实现线性重试策略。以前,我以编程方式管理每个出队的重试逻辑,但我看到 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/

相关文章:

Azure Function V2 值不能为空

c# - Azure函数从服务总线读取队列消息两次

c# - 本地实现的 Azure 功能无法在云端运行

Azure:在 blob_client 中找不到资源

c# - MVVM 光 : RelayCommand : define it lazy or in constructor?

c# - 我可以在这里用什么来模拟? (通配符)C# 中的泛型?

c# - 将 .NET Core/Angular 4 项目发布到 Netlify

c# - BenchmarkDotNet - 如何在类之外注入(inject)参数

Azure Redis 缓存服务丢失了所有数据

azure - 我无法登录我的 Azure 容器注册表