Azure Service Bus队列,卡住的消息或错误的消息计数?

时间:2014-12-24 07:43:02

标签: azure azureservicebus azure-servicebus-queues

我正在使用QueueDescription.MessageCount来获取我的一个队列中剩余的消息数量,但它显示的是正数,但我无法接收任何消息。

我已经检查了活动和死信队列,但没有任何东西可以收到。我试图使用Recieve(); RecieveBatch(); onMessage(); - 完全相同。

有没有人见过这个?邮件是否卡住或计数是否错误。

由于

史蒂夫。

1 个答案:

答案 0 :(得分:1)

我能想到的唯一原因是,如果您有received()条信息,但未拨打complete()abandon()。在这种情况下,消息是"隐藏"特定时间长度(默认为30秒)。在此期间,即使您无法接收任何消息,您的消息计数也会为正。

当30秒(默认值)过去时,消息将变为可见,您可以再次receive()。请注意,每次收到消息时.DeliveryCount属性都会递增,直到达到10(默认值)并且消息被转储到死信子队列中。

请务必在处理完的任何邮件上致电complete()。如果您希望队列中的其他工作人员可以立即使用,请调用abandon()。同时检查DeliveryCount属性以确保您没有处理两次消息。 (如果你在调用complete()之前花了很长时间处理一条消息,然后锁已经被释放,就会发生这种情况。)