2010-11-29 4 views
3

Je voulais juste savoir, s'il existe un moyen d'implémenter un Gestionnaire d'accès Gestionnaire de messages dans NServiceBus.By 'Access Control Handler' je veux dire Un gestionnaire devrait toujours exécuter avant d'autres gestionnaires et devrait contrôler (ou plutôt empêcher conditionnellement l'exécution de l'autre gestionnaire).Comment implémenter un gestionnaire de contrôle d'accès dans NServiceBus

Est-ce que quelqu'un sait comment implémenter cela dans NServiceBus?

J'ai indiqué la priorité des gestionnaires pour obtenir exécutés dans le EndPointConfig que cette

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, ISpecifyMessageHandlerOrdering 
{ 
    #region ISpecifyMessageHandlerOrdering Members 

    public void SpecifyOrder(Order order) 
    { 
     order.Specify<First<AccessControlHandler>>(); 
    } 

    #endregion 
} 

Merci à l'avance,

Vijay.

Répondre

0

Vous pouvez en créant votre AccessControlHandler comme le

public class AccessControlHandler : IHandleMessages<IMessage> 
{ 
    public IBus Bus { get; set; } 

    public void Handle(IMessage message) 
    { 
     IDictionary<string, string> headers = Bus.CurrentMessageContext.Headers; 
     string token; 

     if (headers.TryGetValue("access_token", out token)) 
     { 
      if (token == "MY_SECRET") 
      { 
       Console.WriteLine("User authenticated"); 
       return; 
      } 
     } 

     Console.WriteLine("User not authenticated"); 
     Bus.DoNotContinueDispatchingCurrentMessageToHandlers(); 
    } 

suivant la dernière ligne est importante car cela indique au bus le message a réussi mais ne passe pas le message plus loin dans le pipeline

Questions connexes