2010-10-07 2 views
0

Les gestionnaires sont-ils réutilisés pour passer un autre message?Les membres du gestionnaire NServiceBus sont-ils sûrs pour stocker des données liées aux messages (et non liées)?

public abstract class SomeHandler : IHandleMessages<MyEvent> 
{ 
    public IBus Bus { get; set; } 
    public String Message { get; set; } 

    public void Handle(T message) 
    { 
     Message = "Test"; 
     SomeInstanceMethod(); 
    } 

    public void SomeInstanceMethod() 
    { 
     if (Message = ...) // Can i use Message here? 
      return; 
    } 
} 

Répondre

2

Par défaut, les gestionnaires de messages sont configurés comme ComponentCallModelEnum.Singlecall, ce qui signifie que chaque appel sur le composant est effectuée sur une nouvelle instance. Ainsi, deux messages seront traités par différentes instances de la classe et ne pourront pas partager l'état. Cependant, ce que vous avez ici est de définir une propriété de classe, puis d'appeler une autre méthode de la classe qui récupère cette propriété. Cela fonctionnerait bien. Cependant, à mon avis, c'est un peu confus, et si c'est ce que vous cherchez, il vaut mieux passer des valeurs à une autre méthode en tant que paramètre.

+0

Merci David. À propos de votre argument sur la transmission des valeurs en tant que paramètres: le code que j'ai fourni est juste une aide à ma question. Je suis d'accord que dans la vraie vie ce code ne devrait pas exister. –

Questions connexes