Asp.net mvc NServiceBus版本5 Asp.NET MVC
我们有一个ASP.NETMVC4网站,使用NServiceBus向各种服务发送消息。因为我们的开发环境没有安装这些服务,所以我们为本地开发存根ServiceBus实例。我们使用在应用程序中注册的Autofac模块来设置这一切,并配置总线实例以注入控制器 我的NSB 3.3配置: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) {
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监控插件,但在机器上没有相应的队列
解决方案是安装。这会有帮助吗?我不知道你是怎么想出来的,但你救了我很多钱。谢谢