#azure-storage #lazy-loading #lazy-initialization #azure-storage-queues #retrypolicy
#azure-хранилище #отложенная загрузка #отложенная инициализация #azure-storage-queues #политика повторных попыток
Вопрос:
Я использую пакет nuget «Microsoft.Azure.Хранение.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’.
Как включить механизм повторных попыток в описанный выше способ создания отложенного подключения к очереди?
Ответ №1:
Вы можете обратиться к этому официальному документу, и вы можете использовать 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;
});