3

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

我已经检查了活动和死信队列,但没有任何东西可以接收。我试过用Recieve(); RecieveBatch(); onMessage();- 都一样。

有没有其他人看过这个?是消息卡住还是计数不正确。

谢谢

史蒂夫。

4

1 回答 1

1

我能想到的唯一原因是你有received()消息但没有打电话complete()abandon()。在这种情况下,消息会“隐藏”一段特定的时间(默认为 30 秒)。在此期间,即使您收不到任何消息,您的消息计数也会为正数。

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

请务必始终调用complete()您已处理的任何消息。abandon()如果您希望它立即在队列中可供其他工作人员处理,请调用。还要检查DeliveryCount属性以确保您没有两次处理消息。(如果您在调用之前花费很长时间处理消息complete()并且此时锁已被释放,则可能会发生这种情况。)

于 2015-01-18T14:20:58.710 回答