2010-07-29 72 views
2

是否有可能在应用程序中使用NServiceBus而没有任何输入队列?NServiceBus没有输入队列

原因是,我有一个ASP.NET MVC应用程序,当发生某些事情时(例如,新用户注册)向其他应用程序发送消息。 Web应用程序从不接收任何回复或其他消息,因此我不想让应用程序停止运行。 msmq偷看每秒抛出异常。

回答

1

这是支持的,只需删除msmstranport配置部分,所有应该没问题。这工作对NServiceBus的2.0.1281.0(NET4)版本没有的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(IMessage message) 第22行:第23行:_bus.Send(message); 24行:} – kfuglsang 2010-07-30 07:00:52

+0

我错了,开始需要被调用。编辑我的答案来反映这一点。也会检查2.1,但鉴于它不稳定,我建议你如果遇到麻烦就转移到2.0 – 2010-08-10 19:16:48

0

我会尝试不配置输入队列。 Bus.Send将使用内部出站队列发送消息。

+0

它不显得那么容易。 我试图降低我的配置是:。 Configure.WithWeb()StructureMapBuilder(ObjectFactory.Container).XmlSerializer()UnicastBus()ImpersonateSender(假).CreateBus()的start() 和删除。我的web.config中的MsMqTransportConfig部分,但它在Configure()方法中引发异常。 – kfuglsang 2010-07-29 12:49:08

+0

我在ASP.NET应用程序中的一个HttpModule没有MsmqTransportConfig部分在web.config中,并与它成功: 总线= NServiceBus.Configure.WithWeb() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .IsTransactional(假) .PurgeOnStartup(假) .UnicastBus() .ImpersonateSender(假) .CreateBus() 。开始(); 我希望它不是一个MVC的东西,但NSB不应该窥视队列。 – 2010-07-29 13:43:14

+0

我在配置过程中得到一个NullReferenceException,如果我没有在我的webconfig中使用MsmqTransportConfig部分。 – kfuglsang 2010-07-30 07:03:08