2010-07-29 113 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