Je n'utilise pas la persistance nhibernate saga et par conséquent je n'ai pas besoin de NHibernateMessageModule.Comment faire pour supprimer le NHibernateMessageModule d'être appelé dans NServiceBus?
Alors comment l'enlever?
Je n'utilise pas la persistance nhibernate saga et par conséquent je n'ai pas besoin de NHibernateMessageModule.Comment faire pour supprimer le NHibernateMessageModule d'être appelé dans NServiceBus?
Alors comment l'enlever?
Vous devez retirer le module du conteneur avant de démarrer le bus, car il est ensuite mis en cache. Vous pouvez le faire en appelant .RunCustomAction() avant .CreateBus(). Start() et en y incluant votre code.
En interne, le CastleWindsorBuilder fait cela.
Component.For (GetAllServiceTypesFor (concreteComponent)) ImplementedBy (concreteComponent);
Vous devrez peut-être également supprimer le composant pour toutes les interfaces qu'il est enregistré, c'est-à-dire IMessageModule.
Jusqu'ici j'ai ceci.
Note J'utilise Castle Windsor comme conteneur.
Après NServiceBus a fait sa configuration
var container = new WindsorContainer();
NServiceBus.Configure.With()
.CastleWindsorBuilder(container)
.XmlSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.LoadMessageHandlers();
-je supprimer le composant du château de Windsor
container.Kernel.RemoveComponent("NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule");
pas l'approche la plus élégante mais il fonctionne.
J'espère qu'il y a un meilleur moyen.
En fait cela ne fonctionne pas :( Le NHibernateMessageModule est toujours appelé. –