2014-10-27 2 views
1

У нас есть веб-сайт ASP.NET MVC 4 с использованием NServiceBus для отправки сообщений различным службам. Поскольку в наших средах Dev не установлены эти службы, мы закрываем экземпляр ServiceBus для локальной разработки. Мы используем модуль Autofac, зарегистрированный в нашем Application_Start, чтобы установить все это и сконфигурировать наш экземпляр шины для впрыска в контроллеры.NServiceBus Version 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 –

ответ

1

Хорошо, получается, что это путь NSB 5'сказать Вам у вас есть ServiceControl плагины, установленные в конечной точке мониторинга, но не имеют соответствующих очередей на машине.

Решение должно установить ServiceControl.

+0

Я не знаю, как вы это поняли, но вы спасли меня много тим. Благодаря! – gerodim