Azure Service Bus Peek Batch方法返回错误的记录数

时间:2015-04-07 13:09:55

标签: azure queue servicebus peek

我有一个带有~900条消息的Azure队列(ServiceBus主题订阅DeadLetter队列)。我想列出它们用于调试目的。我调用参数messageCount设置为100的PeekBatch方法。我希望得到100条消息,但我只收到69条消息。为什么会这样?

2 个答案:

答案 0 :(得分:2)

我最近遇到了类似的问题,报告的Active Message Count数量高于可以读取的实际消息数。经过一番调查,我联系了微软的Azure支持团队。这是他们告诉我的:

  

经过研究,我发现有一个错误,计数没有显示正确的值。该错误处于活动状态,因此无法解决。产品组正在跟踪它,但我没有任何ETA。

虽然在我的情况下它是关闭的活动消息计数,但这可能是同样的问题。

我找到了一种方法(只能在某些时候工作 - 我不知道为什么)来纠正消息计数。使用Service Bus Explorer,选择显示问题的主题,点击Update(未更改任何设置),然后点击Refresh。

答案 1 :(得分:0)

当我尝试从启用分区的队列中查看消息时,我也遇到了同样的问题。如果我使用传递消息计数作为参数的PeekBatch方法,则即使实际消息计数高于该值,我也只能读取其中一些消息。

分区队列-分区队列由不同的消息代理处理的多个片段组成。当消息发送到分区队列时,服务总线将消息分配给片段之一。当客户端希望从队列接收消息时,服务总线会检查所有片段是否有消息。如果找到,则选择一个并传递给接收器。

因此,当我们尝试使用PeekBatch()方法获取消息时,即使它与给定的消息数不匹配,它也会检查消息的片段并从最初发现的片段中选择消息。