我正在使用 NServiceBus,我需要知道有多少客户端订阅了特定的消息类型(甚至更好的是订阅者的名称)。我说的是 pub\sub 场景。
是否可以在 NServiceBus 中获取此信息?
谢谢
我正在使用 NServiceBus,我需要知道有多少客户端订阅了特定的消息类型(甚至更好的是订阅者的名称)。我说的是 pub\sub 场景。
是否可以在 NServiceBus 中获取此信息?
谢谢
您可以直接将其从订阅存储中提取出来。对数据库的查询或队列上的 .GetAllMessages() 将为您提供计数和订阅者地址。如果您希望在代码中执行此操作,您可以为订阅消息编写一个处理程序并以这种方式计算它们。
我已经成功使用了 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();
}
}