azure-storage - Azure 存储队列 - 重试机制实现
问题描述
我使用 nuget 包 "Microsoft.Azure.Storage.Queue" Version="11.1.7" 创建 Azure 存储队列客户端,如下所示,
AsyncLazy<CloudQueue> qClient = new AsyncLazy<CloudQueue>( async () =>
{
var myStorageAccount = CloudStorageAccount.Parse("ConnectionString");
var myQueue = myStorageAccount .CreateCloudQueueClient()
.GetQueueReference("QueueName");
await myQueue.CreateIfNotExistsAsync();
return myQueue;
});
在通过上面的“qClient”实例将消息发布到队列时,希望结合重试机制来克服任何瞬态故障。
如何在上述创建延迟队列连接的方式中加入重试机制?
解决方案
可以参考这个官方文档,可以使用CloudBlobClient.DefaultRequestOptions属性
我写了一个代码示例,也许它可以启发你:
AsyncLazy<CloudQueue> qClient = new AsyncLazy<CloudQueue>(async () =>
{
var myStorageAccount = CloudStorageAccount.Parse("ConnectionString");
var myQueue = myStorageAccount.CreateCloudQueueClient();
myQueue.DefaultRequestOptions = new QueueRequestOptions
{
RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(3), 4),
// For Read-access geo-redundant storage, use PrimaryThenSecondary.
// Otherwise set this to PrimaryOnly.
LocationMode = LocationMode.PrimaryThenSecondary,
// Maximum execution time based on the business use case.
MaximumExecutionTime = TimeSpan.FromSeconds(20)
};
var queue = myQueue.GetQueueReference("QueueName");
await queue.CreateIfNotExistsAsync();
return queue;
});
推荐阅读
- selenium - driver.switchTo() 方法无法正常工作
- c++ - C++11 中的混合列表初始化
- opencv - 由于找不到 jasper.h,无法在 Ubuntu 18.04 上编译 Open CV
- c# - EF 核心 2.0 Npgsql:42P01
- css - 不使用 scrollX 选项的数据表的水平滚动
- jquery - jQuery 验证插件具有轻松的“步骤”属性
- linux - 在 node.js 脚本的 npm 内进行拖钓的可能性
- scrapy - mailer.send(mimetype='text/html') 不能与“attachs”一起使用 - Scrapy
- sql-server - SSRS 连接数据集
- android - 如何平滑地减慢谷歌地图中标记的旋转速度