问题描述
我使用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”实例将消息发布到队列中时,采用重试机制来克服任何瞬时故障。
如何通过上述创建延迟队列连接的方式合并重试机制?
解决方法
您可以参考此official document,并且可以使用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;
});