将毒药队列内容放入主队列

时间:2020-06-30 03:49:32

标签: azure-queues

我正在尝试将有害消息移入主队列。我在移动邮件时没有遇到任何问题,但看起来邮件已转换为其他加密级别。

<bound method DictMixin.values of {'id': '389a834e-48af-41b5-be36-5f61ad7c2232', 'inserted_on': 
datetime.datetime(2020, 6, 30, 3, 13, tzinfo=datetime.timezone.utc), 
'expires_on': datetime.datetime(2020, 7, 7, 3, 13, tzinfo=datetime.timezone.utc),
'dequeue_count': 0, 'content': 
'eyJjYWxsX2JhY2tfdXJpIjogImh0dHBzOi8vcG9zdG1hbi1lY2hvLmNvbS9wb3N0IiwgInBpcGVsaW5lX3J1bl
 9pZCI6ICI3OTY1MGU3Zi01NmFmLTRiYzgtOWE3NC0yYTk3YWRhOWRhNWUiLCAiZXhlY
 3V0aW9uX2lkIjogImRmYzcwMjAwLTY3MzgtNDNkMy1',
 'pop_receipt': None, 'next_visible_on': None}>

如何将内容转换为消息队列?

1 个答案:

答案 0 :(得分:0)

Microsoft Azure Storage Explorer的1.4.1版本无法将邮件从一个Azure队列移至另一个。

这是一个简单的solution,用于将有毒消息传送回始发队列。显然,您需要修复导致消息最终出现在有毒消息队列中的错误!

您需要将NuGet软件包引用添加到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;
}
相关问题