private async Task <CloudQueue> CreateCloudQueue( StorageQueueOptions options, StorageAccountOptions storageAccountOptions, CancellationToken cancellationToken = default) { var sw = Stopwatch.StartNew(); var cloudStorageAccount = await storageAccountOptions.CloudStorageAccount.Value; var cloudQueueClient = cloudStorageAccount.CreateCloudQueueClient(); var queue = cloudQueueClient.GetQueueReference(options.QueueName); var created = await queue.CreateIfNotExistsAsync(cancellationToken); if (created) { _logger?.LogInformation(" - No Azure Queue [{queueName}] found - so one was auto created.", options.QueueName); } else { _logger?.LogInformation(" - Using existing Azure Queue [{QueueName}] [{optionsName}].", options.QueueName, options); } sw.Stop(); _logger?.LogInformation(" - {nameOf} ran for {seconds}", nameof(CreateCloudQueue), sw.Elapsed.TotalSeconds); return(queue); }
public StorageQueue( StorageQueueOptions storageQueueOptions, StorageAccountOptions storageAccountOptions, ILogger logger = default) { if (storageAccountOptions == null) { throw new ArgumentNullException(nameof(storageAccountOptions)); } _storageQueueOptions = storageQueueOptions ?? throw new ArgumentNullException(nameof(storageQueueOptions)); _logger = logger; _queue = new Lazy <Task <CloudQueue> >(() => CreateCloudQueue(_storageQueueOptions, storageAccountOptions)); }