1

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

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

谢谢

4

2 回答 2

3

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

于 2010-12-24T03:21:14.563 回答
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();
    }
}
于 2012-02-29T13:42:43.463 回答