2014-10-27 86 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