C# brokeredmessage microsoft服务总线队列ReceiveBatch未获取所有死信消息

C# brokeredmessage microsoft服务总线队列ReceiveBatch未获取所有死信消息,c#,azure,queue,azure-servicebus-queues,brokeredmessage,C#,Azure,Queue,Azure Servicebus Queues,Brokeredmessage,我正在使用Microsoft Service Bus测试一个死信队列项目。我发送26条消息(代表字母表),我使用一个程序,在接收消息时,随机将其中一些消息放入死信队列。消息总是以peek模式从死信队列中读取,因此一旦到达那里,它们就停留在那里。运行几次后,所有26条消息都将处于死信队列中,并且始终保持不变 但是,在阅读时,有时只阅读少数(如6),有时全部阅读26 我使用命令: const int maxToRead = 200; // It seems one wants to set this

我正在使用Microsoft Service Bus测试一个死信队列项目。我发送26条消息(代表字母表),我使用一个程序,在接收消息时,随机将其中一些消息放入死信队列。消息总是以peek模式从死信队列中读取,因此一旦到达那里,它们就停留在那里。运行几次后,所有26条消息都将处于死信队列中,并且始终保持不变

但是,在阅读时,有时只阅读少数(如6),有时全部阅读26

我使用命令:

const int maxToRead = 200; // It seems one wants to set this higher than    
                          // the anticipated load, obtaining only some back
IEnumerable<BrokeredMessage> dlIE = 
            deadletterSubscriptionClient.ReceiveBatch(maxToRead);
const int maxToRead=200;//似乎有人想把这个设定得比这个更高
//预期负载,仅获得一些回报
IEnumerable dlIE=
deadletterSubscriptionClient.ReceiveBatch(maxToRead);
ReceiveBatch有一个超负荷,它有一个超时,但这并没有帮助,而且可能只会增加复杂性

为什么它不每次都获取全部26条消息,因为它是在“peek”模式下使用的,并且消息保持在那里

我可以使用“服务总线浏览器”来实际验证所有消息是否都在死信队列中并保持在那里


这主要是一个测试示例,但我们希望“ReceiveBatch”能够在确定性模式下工作,而不是以非常(糟糕)的随机方式工作…

这只是一个部分答案或解决方法;以下代码可靠地获取所有元素,但不使用“ReceiveBatch”;请注意,据我所知,Peek(I)是基于一个索引进行操作的。另外:根据运行的服务器的不同,如果您是通过消息拉取付费的,那么这可能(也可能不是)会更昂贵,因此使用时请自行承担风险:

            List<BrokeredMessage> dlIE = new List<BrokeredMessage>();

            BrokeredMessage potentialMessage = null;
            int loopCount = 1;
            while ((potentialMessage = deadletterSubscriptionClient.Peek(loopCount)) != null)
            {
                dlIE.Add(potentialMessage);
                loopCount++;
            }
List dlIE=new List();
BrokeredMessage potentialMessage=null;
int loopCount=1;
while((potentialMessage=deadletterSubscriptionClient.Peek(loopCount))!=null)
{
dlIE.Add(潜在消息);
loopCount++;
}

如果有人问类似的问题,请参见“不按预期工作”。任何人都知道如何向Microsoft报告此错误;我试过了,但找不到现成的链接如果有人对如何直接使用ReceiveBatch有更好的答案,请发帖。同样遗憾的是,要以一种更明显、更简单的方式向Microsoft报告看似真实的bug并不容易!