簡體   English   中英

Azure 服務總線 | 重新處理死信消息返回隊列 | 如何接收來自死信隊列的所有消息?

[英]Azure service bus | Re process dead letter messages back to queue | How to receive all messages from dead letter queue?

我想使用唯一標識符作為用戶輸入將消息處理集成回隊列。 如何在一次調用中從死信中獲取所有消息,而不是多次循環?

        var msRequestIdArg = MsRequestIds.Split('\n').Select(e => e.Trim()).ToList();
        var msRootRequestArg = MsRootRequestIds.Split('\n').Select(e => e.Trim()).ToList();
        var queueClient = QueueClient.CreateFromConnectionString(ServiceBusConnectionString, QueueName);
        var factory = MessagingFactory.CreateFromConnectionString(ServiceBusConnectionString);
        var deadLetterPath = QueueClient.FormatDeadLetterPath(QueueName);
        var deadLetterQueueReceiver = factory.CreateMessageReceiver(deadLetterPath, ReceiveMode.PeekLock);
        deadLetterQueueReceiver.PrefetchCount = 10;
        var messageResponse = new List<Tuple<string, bool, string>>();
        var counter = msRequestIdArg.Count + msRootRequestArg.Count;

        while (counter > 0)
        {
            var brokeredMessage = await deadLetterQueueReceiver.ReceiveAsync().ConfigureAwait(false);

簡短的回答:你不能也不應該。

想象一下,您將有數十萬甚至數百萬條消息需要返回。 您能想象對於需要傳輸這么多消息的代理和客戶端的限制嗎? 預計會發生故障,並且由於消息數量眾多,您很快就會發現自己處於這樣一種情況,即這樣的呼叫會持續失敗,從而使您的系統無能為力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM