2010-12-23 3 views
1

J'utilise NServiceBus et j'ai besoin de savoir combien de clients sont abonnés à un type de message spécifique (encore mieux les noms des abonnés). Je parle dans un scénario pub \ sub.Comment obtenir le nombre total d'abonnés dans NServiceBus?

Est-il possible d'obtenir cette information dans NServiceBus?

Thx

+0

Avez-vous besoin de cela à des fins de surveillance ou pour des raisons professionnelles? –

Répondre

3

Vous pouvez tirer ce droit de votre stockage d'abonnement. Soit une requête à la base de données ou un .GetAllMessages() dans la file d'attente vous obtiendrez un compte et l'adresse des abonnés. Si vous cherchez à le faire dans le code, vous pouvez écrire un gestionnaire pour le message d'abonnement et les compter de cette façon.

+0

J'ai besoin de savoir à un moment donné combien d'abonnés existe. Quel type de messages dois-je gérer dans le gestionnaire? – rguerreiro

1

J'ai utilisé ISubscriptionStorage avec succès.

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(); 
    } 
} 
Questions connexes