Currently, the Microsoft Azure Storage Explorer doesn’t have the ability to move messages from one Azure queue to another. During development, I sometimes need to retry messages that are in the poison message queue. A poison message is a message that has exceeded the maximum number of delivery attempts to the application. This happens when a queue-based application cannot process a message because of errors.
It’s not difficult to write, but thought it might save someone a few minutes, so I’m posting it here. You’ll need to add a NuGet package reference to Microsoft.NET.Sdk.Functions
using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Queue; void Main() { const string queuename = "MyQueueName"; string storageAccountString = "xxxxxx"; RetryPoisonMesssages(storageAccountString, queuename); } private static int RetryPoisonMesssages(string storageAccountString, string queuename) { CloudQueue targetqueue = GetCloudQueueRef(storageAccountString, queuename); CloudQueue poisonqueue = GetCloudQueueRef(storageAccountString, queuename + "-poison"); int count = 0; while (true) { var msg = poisonqueue.GetMessage(); if (msg == null) break; poisonqueue.DeleteMessage(msg); targetqueue.AddMessage(msg); count++; } return count; } private static CloudQueue GetCloudQueueRef(string storageAccountString, string queuename) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageAccountString); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); CloudQueue queue = queueClient.GetQueueReference(queuename); return queue; }