我正在使用 QueueDescription.MessageCount 来获取我的一个队列中剩余的消息数,但它显示为正数但我无法收到任何消息。
我已经检查了活动和死信队列,但没有任何东西可以接收。我试过用Recieve(); RecieveBatch(); onMessage();
- 都一样。
有没有其他人看过这个?是消息卡住还是计数不正确。
谢谢
史蒂夫。
我正在使用 QueueDescription.MessageCount 来获取我的一个队列中剩余的消息数,但它显示为正数但我无法收到任何消息。
我已经检查了活动和死信队列,但没有任何东西可以接收。我试过用Recieve(); RecieveBatch(); onMessage();
- 都一样。
有没有其他人看过这个?是消息卡住还是计数不正确。
谢谢
史蒂夫。
我能想到的唯一原因是你有received()
消息但没有打电话complete()
或abandon()
。在这种情况下,消息会“隐藏”一段特定的时间(默认为 30 秒)。在此期间,即使您收不到任何消息,您的消息计数也会为正数。
当 30 秒(默认值)过去后,消息变为可见,您可以receive()
再次查看它们。请注意,.DeliveryCount
每次收到消息时该属性都会递增,直到达到 10(默认值)并且消息被转储到死信子队列中。
请务必始终调用complete()
您已处理的任何消息。abandon()
如果您希望它立即在队列中可供其他工作人员处理,请调用。还要检查DeliveryCount
属性以确保您没有两次处理消息。(如果您在调用之前花费很长时间处理消息complete()
并且此时锁已被释放,则可能会发生这种情况。)