首页 > 解决方案 > DeliveryCount 在 Microsoft Azure ServiceBus 中随消息而增加

问题描述

我正在为 .NET Standard 使用 Microsoft Azure 服务总线。

我正在使用多个消费者(MessageReceiver 的多个实例)和 PeekLock 读取服务总线队列中的消息。

我没有完成消息的接收操作,以便将它们从队列中删除。

问题是第二条消息的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,即使我是否尝试阅读它们也是如此。

标签: azureazureservicebusservicebus

解决方案


您应该为多个消费者使用主题订阅。多次接收消息将增加消息的传递计数。一旦计数增加超过队列的最大传递计数,消息将被移动到死信队列


推荐阅读