![](/img/trans.png)
[英]brokeredmessage microsoft service bus queue ReceiveBatch not obtaining all dead letter messages
[英]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.