2010-06-09 4 views

Répondre

0

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.

0

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.

+0

En fait cela ne fonctionne pas :( Le NHibernateMessageModule est toujours appelé. –

Questions connexes