【问题标题】:NServiceBus Version 5 Asp.NET MVCNServiceBus 版本 5 Asp.NET MVC
【发布时间】:2014-10-27 15:32:35
【问题描述】:

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

我的 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,但我没有声誉)

【问题讨论】:

标签: asp.net-mvc nservicebus


【解决方案1】:

好的,事实证明这是 NSB 5 告诉您在端点中安装了 ServiceControl 监控插件的方式,但机器上没有适当的队列。

解决办法是安装ServiceControl

【讨论】:

  • 我不知道你是怎么想出来的,但你为我节省了很多时间。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-10-21
  • 2021-11-24
  • 2016-08-13
  • 2021-04-26
  • 2010-09-14
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
相关资源
最近更新 更多