如何获得NServiceBus中的订阅者总数?

时间:2010-12-23 17:33:59

标签: nservicebus publish-subscribe

我正在使用NServiceBus,我需要知道有多少客户端订阅了特定的消息类型(更好的是订阅者的名字)。我在pub \ sub场景中谈论。

是否可以在NServiceBus中获取此信息?

THX

2 个答案:

答案 0 :(得分:3)

您可以将其从订阅存储中拉出来。对数据库的查询或队列上的.GetAllMessages()将获得计数和订阅者地址。如果您希望在代码中执行此操作,则可以为订阅消息编写处理程序并以此方式对其进行计数。

答案 1 :(得分:1)

我已经成功使用了ISubscriptionStorage。

public class SubscribersForMessageHandler :
             IHandleMessages<SubscribersForMessageRequest>
{
    public ISubscriptionStorage Storage { get; set; }
    public IBus Bus { get; set; }

    public void Handle(SubscribersForMessageRequest message)
    {
        Bus.Reply<SubscribersForMessageResponse>(m=>
        {
            m.SagaId = message.SagaId;
            m.MessageType = message.MessageType;
            m.SubscriberEndpoints = GetSubscribersForMessage(message.MessageType);
        });
    }

    private List<string> GetSubscribersForMessage(string type)
    {
        return Storage.GetSubscribersForMessage(
          new List<string> { type }).ToList();
    }
}