У нас есть веб-сайт 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, но у меня нет репутации)
Это поможет? https://github.com/Particular/NServiceBus.Msmq.Samples/blob/master/VideoStore.Msmq/VideoStore.ECommerce/Global.asax.cs –