2014-10-27 110 views
1

我們有一個ASP.NET MVC 4網站使用NServiceBus發送消息到各種服務。因爲我們的開發環境沒有安裝這些服務,所以我們爲本地開發存根ServiceBus實例。我們使用在我們的Application_Start中註冊的Autofac模塊來完成這一切,並配置我們的總線實例以便注入到控制器中。NServiceBus版本5 Asp.NET MVC

我NSB 3.3配置:

public class ServiceModule : Module 
    { 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.Register<IBus>((c, p) => 
     { 
     var useServiceBus = bool.Parse(ConfigurationManager.AppSettings["UseServiceBus"]); 

     if (useServiceBus) 
     { 
      return NServiceBus.Configure.With() 
      .Log4Net() 
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqTransport().IsTransactional(false).PurgeOnStartup(false) 
      .MsmqSubscriptionStorage() 
      .UnicastBus().ImpersonateSender(false) 
      .CreateBus() 
      .Start(() => NServiceBus.Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install()); 
     } 
     else 
      return c.Resolve<TestServiceBus>(); 
     }).SingleInstance(); 
    } 
    } 

我試圖NSB 5.0.3配置:

public class ServiceModule : Module 
    { 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.Register<IBus>((c, p) => 
     { 
     var useServiceBus = bool.Parse(ConfigurationManager.AppSettings["UseServiceBus"]); 

     if (useServiceBus) 
     { 
      var configuration = new BusConfiguration(); 
      configuration.UsePersistence<RavenDBPersistence>(); 
      configuration.RegisterComponents(r => 
      { 
      r.ConfigureComponent<EnvironmentMessageMutator>(() => new EnvironmentMessageMutator(new DetectsEnvironment().GetEnvironment()), DependencyLifecycle.InstancePerCall); 
      }); 
      return Bus.Create(configuration); 
     } 
     else 
      return c.Resolve<TestServiceBus>(); 
     }).SingleInstance(); 
    } 
    } 

Bus.Create與一個的ObjectDisposedException失敗,上CommonObjectBuilder 「無法訪問已釋放的對象」。我無法找到任何有關在NSB 5中進行設置的正確方法的文檔,或者如何配置常規NServiceBus注入以允許我們執行上面描述的存根。

(這應被標記NServiceBus 5,但我沒有信譽)

+2

這會有幫助嗎? https://github.com/Particular/NServiceBus.Msmq.Samples/blob/master/VideoStore.Msmq/VideoStore.ECommerce/Global.asax.cs – 2014-10-27 17:37:16

回答

1

好吧,事實證明這是告訴你你的的ServiceControl監控安裝在端點插件NSB 5的方式,但機器上沒有合適的隊列。

解決方法是安裝ServiceControl

+0

我不知道你是怎麼想出來的,但你救了我一個很多thime。謝謝! – gerodim 2015-05-06 14:26:19