2010-12-23 53 views
1

我正在使用NServiceBus,我需要知道有多少客戶訂閱了特定的消息類型(甚至更好的訂戶名稱)。我在一個pub \ sub場景中講話。如何獲取NServiceBus中的訂戶總數?

是否有可能在NServiceBus中獲取此信息?

THX

+0

您是否需要此目的用於監控目的或因業務需求? – 2010-12-24 10:02:23

回答

3

你可以拉這個權利從你訂閱的存儲空間。對數據庫的查詢或隊列中的.GetAllMessages()都會爲您提供計數和用戶地址。如果您想要在代碼中執行此操作,則可以爲訂閱消息編寫一個處理程序並對它們進行計數。

+0

我需要知道在某個時間點有多少用戶存在。我應該在處理程序中處理哪種類型的消息? – rguerreiro 2010-12-27 10:50:13

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(); 
    } 
} 
相關問題