我正在使用QueueDescription.MessageCount来获取我的一个队列中剩余的消息数量,但它显示的是正数,但我无法接收任何消息。
我已经检查了活动和死信队列,但没有任何东西可以收到。我试图使用Recieve(); RecieveBatch(); onMessage();
- 完全相同。
有没有人见过这个?邮件是否卡住或计数是否错误。
由于
史蒂夫。
答案 0 :(得分:1)
我能想到的唯一原因是,如果您有received()
条信息,但未拨打complete()
或abandon()
。在这种情况下,消息是"隐藏"特定时间长度(默认为30秒)。在此期间,即使您无法接收任何消息,您的消息计数也会为正。
当30秒(默认值)过去时,消息将变为可见,您可以再次receive()
。请注意,每次收到消息时.DeliveryCount
属性都会递增,直到达到10(默认值)并且消息被转储到死信子队列中。
请务必在处理完的任何邮件上致电complete()
。如果您希望队列中的其他工作人员可以立即使用,请调用abandon()
。同时检查DeliveryCount
属性以确保您没有处理两次消息。 (如果你在调用complete()
之前花了很长时间处理一条消息,然后锁已经被释放,就会发生这种情况。)