我正在尝试接收deadletter消息并在文件中输出xml并在消息上调用Abandon()。我的死信消息计数大于4500.但ReceiveBatch()方法不允许我获取超过4500条消息。如果我在其上实现了一个while循环,那么它会继续重复相同的4500个无法解决的消息。
任何人都可以帮我用C#代码来获取超过4500条消息,或者能够指示ReceiveBatch方法继续下一组4500条消息,这样我就可以循环遍历所有的无法消息的消息在Service Bus Explorer中查看我的队列。
P.S。到目前为止我所理解的是,ReceiveBatch方法无法跟踪它所提取的最后一个序列号,因此这是重复问题。我尝试将PeekBatch方法与ReceiveBatch方法结合起来,看看PeekBatch方法的sequencenumber跟踪功能是否帮助我解决了这个问题,如下所示,但是因为没有工作,所以beyong 4500消息:
这是我编写的用于迭代批量消息的代码块(最好超过4500个):
var client = QueueClient.CreateFromConnectionString(connectionString, DeadletterProcessor.Properties.Settings.Default.QueuePath);
client.PrefetchCount = 50000;
Func<int, IEnumerable<BrokeredMessage>> getBatch = (batchSize) =>
{
lock (readQueueLock)
{
return client.ReceiveBatch(batchSize, TimeSpan.FromSeconds(10));
}
};
IEnumerable<BrokeredMessage> batch = null;
while (client.PeekBatch(4500) != null)
{
batch = getBatch(4500);
Console.WriteLine(batch.Count());
foreach (var message in batch)
{
try
{
//Parse details from SOAP message and writes xml in .txt file
Output(message);
message.Abandon();
}
}
}
请帮我解决一下这个问题。任何帮助都会有很大的帮助。
由于