Asp.net mvc NServiceBus版本5 Asp.NET MVC

Asp.net mvc NServiceBus版本5 Asp.NET MVC,asp.net-mvc,nservicebus,Asp.net Mvc,Nservicebus,我们有一个ASP.NETMVC4网站,使用NServiceBus向各种服务发送消息。因为我们的开发环境没有安装这些服务,所以我们为本地开发存根ServiceBus实例。我们使用在应用程序中注册的Autofac模块来设置这一切,并配置总线实例以注入控制器 我的NSB 3.3配置: public class ServiceModule : Module { protected override void Load(ContainerBuilder builder) {

我们有一个ASP.NETMVC4网站,使用NServiceBus向各种服务发送消息。因为我们的开发环境没有安装这些服务,所以我们为本地开发存根ServiceBus实例。我们使用在应用程序中注册的Autofac模块来设置这一切,并配置总线实例以注入控制器

我的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();
    }
  }
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();
    }
  }
公共类服务模块:模块
{
受保护的覆盖无效负载(ContainerBuilder builder)
{
建造商注册((c,p)=>
{
var useServiceBus=bool.Parse(ConfigurationManager.AppSettings[“useServiceBus”]);
如果(使用服务总线)
{
返回NServiceBus.Configure.With()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport().IsTransaction(false).PurgeOnStartup(false)
.MsmqSubscriptionStorage()
.UnicastBus().ImpersonateSender(false)
.CreateBus()
.Start(()=>NServiceBus.Configure.Instance.ForInstallationOn().Install());
}
其他的
返回c.Resolve();
}).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)
        {
          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();
    }
  }
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();
    }
  }
公共类服务模块:模块
{
受保护的覆盖无效负载(ContainerBuilder builder)
{
建造商注册((c,p)=>
{
var useServiceBus=bool.Parse(ConfigurationManager.AppSettings[“useServiceBus”]);
如果(使用服务总线)
{
var配置=新总线配置();
configuration.UsePersistence();
注册表组件(r=>
{
r、 ConfigureComponent(()=>new Environment MessageMutator(new DetectEnvironment().GetEnvironment()),DependencyLifecycle.InstancePerCall);
});
返回总线。创建(配置);
}
其他的
返回c.Resolve();
}).SingleInstance();
}
}
Bus.Create因CommonObjectBuilder上的ObjectDisposedException“无法访问已处置对象”而失败。我找不到任何关于在NSB 5中正确设置此项的文档,也找不到如何配置常规NServiceBus注入以允许我们执行上述stubing的文档


(这应该标记为NServiceBus 5,但我没有声誉)

好的,这是NSB 5告诉您在端点中安装了ServiceControl监控插件,但在机器上没有相应的队列


解决方案是安装。

这会有帮助吗?我不知道你是怎么想出来的,但你救了我很多钱。谢谢