【问题标题】:How to get the total number of subscribers in NServiceBus?如何获取 NServiceBus 中的订阅者总数?
【发布时间】:2010-12-23 17:33:58
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 您是出于监控目的还是出于业务需求需要此功能?

标签: nservicebus publish-subscribe


【解决方案1】:

您可以直接将其从订阅存储中提取出来。对数据库的查询或队列上的 .GetAllMessages() 将为您提供计数和订阅者地址。如果您希望在代码中执行此操作,您可以为订阅消息编写一个处理程序并以这种方式计算它们。

【讨论】:

  • 我需要在某个时间点知道有多少订阅者存在。我应该在处理程序中处理哪种类型的消息?
【解决方案2】:

我已经成功使用了 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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多