我们有一个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,但我没有信誉)
这会有帮助吗? https://github.com/Particular/NServiceBus.Msmq.Samples/blob/master/VideoStore.Msmq/VideoStore.ECommerce/Global.asax.cs – 2014-10-27 17:37:16