Example #1
0
        /// <summary>
        /// Moves message to a dead letter queue which has the same name as original queue prefixed with "-deadletter". This is done because
        /// Azure Storage queues do not support deadlettering directly.
        /// </summary>
        public async Task DeadLetterAsync(QueueMessage message, string reason, string errorDescription, CancellationToken cancellationToken)
        {
            var dead = (QueueMessage)message.Clone();

            dead.Properties["deadLetterReason"] = reason;
            dead.Properties["deadLetterError"]  = errorDescription;

            CloudQueue deadLetterQueue = await GetDeadLetterQueue();

            await deadLetterQueue.AddMessageAsync(Converter.ToCloudQueueMessage(message));

            await ConfirmMessageAsync(message, cancellationToken);
        }