首页 文章

Azure ServiceBus PeekBatch方法返回错误的记录数

提问于
浏览
0

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

2 回答

  • 2

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

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

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

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

  • 0

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

    分区队列 - 分区队列由不同消息代理处理的多个片段组成 . 当消息发送到分区队列时,Service Bus会将消息分配给其中一个片段 . 当客户端想要从队列接收消息时,Service Bus会检查所有片段的消息 . 如果它找到任何,它会选择一个并传递给接收器 .

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

相关问题