3

我正在编写一个“服务总线监视器”[Windows] 服务,以便我们可以关注我们的主题/订阅并遇到一个有趣的问题。(当然,“有趣”是指“超级讨厌”。)

对于我的每个主题/订阅对,我创建一个 SubscriptionDescription 以便我可以获得 MessageCount。这工作得很好。

var subscriptionDescription = namespaceManager.GetSubscription(
    busTargetModel.Topic, busTargetModel.Subscription);

var messageCountThisSubscription = subscriptionDescription.MessageCount;

但是,在一种特殊情况下,messageCountThisSubscription == 51,我碰巧知道所有 51 个实际上都坐在死信箱/队列/无论如何,但是,当我尝试获取 MessageCountDetails...

// I actually make this call BEFORE the MessageCount call above.
// (In case that matters somehow)
var messageCountDetails = subscriptionDescription.MessageCountDetails;

...它的所有 5 个属性(ActiveMessageCount、DeadLetterMessageCount、ScheduledMessageCount、TransferDeadLetterMessageCount 和 TransferMessageCount)的值为 0(零!)

我一生都无法想象我在这里做错了什么;看起来很简单,但是.. 零。

想法,见解,任何帮助表示赞赏!

(这是用于 Windows Server 的服务总线,但除了所有 Azure 的东西外,我没有看到任何标签,而且从我读过的内容来看,它们并不是平等的.. 至少现在还没有,所以希望我得到了标签正确。)

4

1 回答 1

3

Scott,Windows Server 的 Service Bus 1.0 不支持消息计数详细信息。该功能是在位锁定后实现的,因此这些属性不会返回预期值。我们为服务总线的服务器和服务产品提供了一个对称(单一)客户端库,因此您可以看到它们可用,但仅在针对服务或最近发布的 Windows Server 服务总线 1.1 预览版时才会填充这些值。您可以从 WebPI 安装它,更多详细信息在这里:http: //msdn.microsoft.com/en-us/library/windowsazure/dn282144 (v=azure.10).aspx

于 2013-07-03T18:50:36.390 回答