我正在使用Microsoft Azure Service Bus for .NET Standard。
我正在使用具有PeekLock读取功能的多个使用者(MessageReceiver的多个实例)从Service Bus队列中读取消息。
为了将消息从队列中删除,我没有完成消息的接收操作。
问题在于第二条消息的deliveryCount基本上是第一条消息的deliveryCount(通常为1)+1,所以2。不知何故,deliveryCount从一条消息传递到另一条消息。当我使用相同的接收者(_messageReceiver1或_messageReceiver2)接收两条消息时,不会发生此问题。
msg1 =等待_messageReceiver1.ReceiveAsync(80); Writeline(msg1.SystemProperties.DeliveryCount);
msg2 =等待_messageReceiver2.ReceiveAsync(80); Writeline(msg2.SystemProperties.DeliveryCount);
在超过门户的最大传递计数之后,由于传递计数已从一条消息传递到另一条消息,因此我所有的消息都发送到了DLQ,即使我尝试不去阅读它们。
答案 0 :(得分:0)
您应该与Topic Subscriptions一起使用多个消费者。多次接收邮件将增加邮件的传递计数。一旦计数增加超过队列的“最大传递计数”,邮件将为moved to Dead Letter Queue。