Azure Service Bus .net SDK 会传递重复消息吗?

Will Azure Service Bus .net SDK deliver duplicate messages?

我目前正在使用 Azure.Messaging.ServiceBus .net SDK 将高吞吐量消息批量发送到 ASB 标准。在高吞吐量批量发送期间通过关闭互联网来模拟间歇性网络连接情况时,我们观察到有一些额外的消息被传送到 ASB。在 ASB 门户中观察到的队列计数与我们的日志不匹配。 ASB 会发生这种情况吗?请注意,我们已为客户端启用重试策略。我遇到了类似的 Whosebug thread,想知道是否有任何与此相关的最新进展。

是;服务总线保证是 at-least-once。当发布失败且状态不明确并重试时,可能会出现重复。使用 duplicate detection 功能有助于防止这种情况,但要求您的应用程序负责分配唯一的 MessageId 值。

如果收到消息但未结算,也会出现重复。一旦其锁过期,该消息就有资格再次被接收。 接收消息的应用程序应确保处理是幂等的,并且任何需要的重复检测或保护措施都已到位。