public static async Task DeleteMessage(string queueName, CloudQueueMessage message)
        {
            var queue = await QueueProvider
                        .GetQueue(queueName : queueName)
                        .ConfigureAwait(continueOnCapturedContext: false);

            await queue
            .DeleteMessageAsync(message : message)
            .ConfigureAwait(continueOnCapturedContext: false);
        }
        public static async Task <CloudQueueMessage> GetMessage(string queueName)
        {
            var queue = await QueueProvider
                        .GetQueue(queueName : queueName)
                        .ConfigureAwait(continueOnCapturedContext: false);

            return(await queue
                   .GetMessageAsync()
                   .ConfigureAwait(continueOnCapturedContext: false));
        }
        public static async Task AddMessage <T>(string queueName, T message)
        {
            var queue = await QueueProvider
                        .GetQueue(queueName : queueName)
                        .ConfigureAwait(continueOnCapturedContext: false);

            await queue
            .AddMessageAsync(message : new CloudQueueMessage(content: message.ToJson()))
            .ConfigureAwait(continueOnCapturedContext: false);
        }
        public static async Task SetMessageVisibilityTimeout(string queueName, CloudQueueMessage message, TimeSpan visibilityTimeout)
        {
            var queue = await QueueProvider
                        .GetQueue(queueName : queueName)
                        .ConfigureAwait(continueOnCapturedContext: false);

            await queue
            .UpdateMessageAsync(
                message : message,
                visibilityTimeout : visibilityTimeout,
                updateFields : MessageUpdateFields.Visibility)
            .ConfigureAwait(continueOnCapturedContext: false);
        }