2010-07-29 6 views
2

Est-il possible d'utiliser NServiceBus dans une application sans aucune file d'attente d'entrée?NServiceBus sans file d'entrée

La raison en est, j'ai une application ASP.NET MVC qui envoie des messages à d'autres applications lorsque quelque chose se passe (par exemple un nouvel utilisateur enregistre). L'application web ne reçoit jamais de réponses ou d'autres messages et je voudrais donc ne pas déranger l'application. avec le msmq qui jette une exception toutes les secondes.

Répondre

1

Cela est pris en charge, il suffit de supprimer la section de configuration msmstranport et tout devrait bien se passer. Cela fonctionne contre la version 2.0.1281.0 (de net4) de NServiceBus sans app.config présente

using NServiceBus; 

    namespace SendOnlyEndpoint.Custom 
    { 
     public class Program 
     { 
      static void Main(string[] args) 
      { 
       var bus = Configure.With() 
        .DefaultBuilder() 
        .XmlSerializer() 
        .MsmqTransport() 
        .UnicastBus() 
        .CreateBus() 
        .Start(); 

       bus.Send("SendOnlyDestination",new TestMessage()); 
      } 
     } 

     public class TestMessage : IMessage 
     { 
     } 
    } 

Plus d'informations sur envoyer des noeuds finaux ne here

+0

Si je n'appelle pas bus.Start() je ne peux pas envoyer de messages. Le bus n'est pas encore démarré, appelez Bus.Start() avant d'essayer d'utiliser le bus. Détails d'exception: System.InvalidOperationException: Le bus n'est pas encore démarré, appelez Bus.Start() avant d'essayer d'utiliser le bus. Ligne 21: public void FireAndForget (message IMessage) Ligne 22: { Ligne 23: _bus.Send (message); Ligne 24:} – kfuglsang

+0

Mon erreur, Start doit être appelé. Edited ma réponse pour refléter cela. Va vérifier aussi 2.1, mais étant donné que ce n'est pas stable, je suggère que vous passiez à 2.0 si vous rencontrez des problèmes –

0

Je ne vais pas essayer de configurer une file d'attente d'entrée. Bus.Send utilisera une file d'attente sortante interne pour envoyer des messages.

+0

Il ne marche pas semble être facile. J'ai essayé de réduire ma configuration:.. Configure.WithWeb() StructureMapBuilder (ObjectFactory.Container) .XmlSerializer() UnicastBus() ImpersonateSender (false) .CreateBus() Démarrer() et retirez la.. MsMqTransportConfig section de mon web.config mais il déclenche une exception dans la méthode Configure() -. – kfuglsang

+0

J'ai les éléments suivants dans une application ASP.NET dans un HttpModule sans section MsmqTransportConfig dans le web.config et j'ai du succès avec: Bus = NServiceBus.Configure.WithWeb() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .IsTransactional (false) .PurgeOnStartup (false) .UnicastBus() .ImpersonateSender (false) .CreateBus() .Start(); J'espère que ce n'est pas une chose MVC, mais NSB ne devrait pas jeter un coup d'oeil sur une file d'attente .. –

+0

Je reçois une exception NullReferenceException pendant la configuration si je le fais sans la section MsmqTransportConfig dans mon webconfig. – kfuglsang

Questions connexes