如何从 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
来获取您的QueueDescription
或TopicDescription
。这些描述将值公开为MessageCount
。
希望这会有所帮助!
【讨论】:
仅供参考,MessageCount 包括主题\订阅中的任何消息(死信和转移)。使用 MessageCountDetails 属性单独拆分计数。请注意,这些计数似乎也存在一个错误,因为它们报告 0,除非最近在“队列”上发生了一些活动。 这个答案有点误导。TopicDescription.MessageCountDetails
会像@Mikee 指出的那样报告错误 - 卡在这个问题上。解决方案是使用SubscriptionDescription
GetSubscription(topicName, subscriptionName)
方法的结果。以上是关于如何从 Windows 服务总线订阅中获取未处理的消息计数?的主要内容,如果未能解决你的问题,请参考以下文章