我正在使用NServiceBus,我需要知道有多少客户端订阅了特定的消息类型(更好的是订阅者的名字)。我在pub \ sub场景中谈论。
是否可以在NServiceBus中获取此信息?
THX
答案 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();
}
}