Пример #1
0
        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);
        }
Пример #2
0
        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));
        }