2010-07-29 2 views
2

Можно ли использовать NServiceBus в приложении без каких-либо входных очередей?NServiceBus без входной очереди

Причина: у меня есть приложение ASP.NET MVC, которое отправляет сообщения другим приложениям, когда что-то происходит (например, новые пользовательские регистры). Веб-приложение никогда не получает ответов или других сообщений, и поэтому я бы не хотел, чтобы это не испортило приложение. с msmq peeking, который выдает исключение каждую секунду.

ответ

1

Это поддерживается, просто удалите раздел конфигурации msmstranport, и все должно быть хорошо. Это работает против 2.0.1281.0 (NET4) версии NServiceBus, не app.config настоящего

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 
     { 
     } 
    } 

Более подробная информации о посыле только конечные точки here

+0

Если я не звоню bus.Start(), я не могу отправлять сообщения. Шина еще не запущена, вызовите Bus.Start(), прежде чем пытаться использовать шину. Сведения об исключении: System.InvalidOperationException: шина еще не запущена, вызовите Bus.Start(), прежде чем пытаться использовать шину. Строка 21: public void FireAndForget (сообщение с сообщением) Строка 22: { Строка 23: _bus.Send (сообщение); Строка 24:} – kfuglsang

+0

Неправильно, Начать нужно называть. Отредактировал свой ответ, чтобы отразить это. Также проверит 2.1, но учитывая, что он нестабилен, я предлагаю вам перейти на 2.0, если у вас возникли проблемы –

0

Я бы постарался не настраивать входную очередь. Bus.Send будет использовать внутреннюю исходящую очередь для отправки сообщений.

+0

Оно не кажется, что легко. Я попытался уменьшить мою конфигурацию:.. Configure.WithWeb() StructureMapBuilder (ObjectFactory.Container) .XmlSerializer() UnicastBus() ImpersonateSender (ложь) .CreateBus() Start() и удалить.. MsMqTransportConfig моего web.config, но он генерирует исключение в методе Configure(). – kfuglsang

+0

У меня есть следующее в приложении ASP.NET в HttpModule без раздела MsmqTransportConfig в файле web.config и у меня есть успех: Bus = NServiceBus.Configure.WithWeb() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .IsTransactional (ложь) .PurgeOnStartup (ложь) .UnicastBus() .ImpersonateSender (ложь) .CreateBus() .start(); Надеюсь, это не вещь MVC, но NSB не должен заглядывать в очередь. –

+0

Я получаю исключение NullReferenceException во время конфигурации, если я делаю это без раздела MsmqTransportConfig в моем webconfig. – kfuglsang

Смежные вопросы