如何从 Windows 服务总线订阅中获取未处理的消息计数?

Posted

技术标签:

【中文标题】如何从 Windows 服务总线订阅中获取未处理的消息计数?【英文标题】:How to get the unprocessed message count from a Windows Service Bus Subscription? 【发布时间】:2013-02-12 08:17:07 【问题描述】:

我正在开发一个需要自动扩展工作进程的系统,这些工作进程从服务总线主题中提取消息进行处理。

为此我需要知道给定订阅的未处理消息的数量。我该怎么做?

我查看了 SubscriptionClient 类,但似乎没有办法找到等待处理的消息数量。

【问题讨论】:

实际上在这里找到了答案:***.com/questions/13957339/… 显然您必须从“NamespaceManager”中获取“SubscriptionDescription”,然后才能获取消息计数。但是,您不能直接从 SubscriptionClient 获取它。 啊,好吧,我没看到你的评论,我的错 :) 仅供参考,“消息计数”包括死信和转移的消息。 【参考方案1】:

您可以通过GetMessage(_name_)GetTopic(_name_) 使用NamespaceManager 来获取您的QueueDescriptionTopicDescription。这些描述将值公开为MessageCount

希望这会有所帮助!

【讨论】:

仅供参考,MessageCount 包括主题\订阅中的任何消息(死信和转移)。使用 MessageCountDetails 属性单独拆分计数。请注意,这些计数似乎也存在一个错误,因为它们报告 0,除非最近在“队列”上发生了一些活动。 这个答案有点误导。 TopicDescription.MessageCountDetails 会像@Mikee 指出的那样报告错误 - 卡在这个问题上。解决方案是使用SubscriptionDescriptionGetSubscription(topicName, subscriptionName) 方法的结果。

以上是关于如何从 Windows 服务总线订阅中获取未处理的消息计数?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 服务总线 http 与 websocket

[Abp 源码分析]九事件总线

Azure 服务总线有序处理消息

如何在 Qt 中模拟消息总线?

每个 Web 服务器的 Azure 服务总线主题订阅

Azure 服务总线中继 - 从本地获取数据