0
我有一个CQRS架构,使用温莎和温莎安装程序全部插入。现在当我们插入NServiceBus时会出现问题。NServiceBus和温莎安装程序
现在我们有一个命令处理程序具有以下签名
public class MyCommandHandler : Handles<MyCommand>
{
public MyCommandHandler(IDomainEvents events)
{
/// bla bla
events.Raise<MyEvent>();
}
}
我想通过注入下iBus改变这一点,有以下的代码实现
public class MyCommandHandler : Handles<MyCommand>
{
public MyCommandHandler(IBus bus)
{
/// bla bla
bus.Send("MyQueue", myMessage);
}
}
所以为了做到这一点,我需要创建一个NServiceBus客户端Windsor安装程序并从Windsor引导客户端总线。我虽然做这样的事情
public class BusClientInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
IBus bus = ConfigureBus();
container.Register(Component.For<IBus>().Instance(bus));
}
}
而且配置我的公交车在下面
var busConfiguration = new BusConfiguration();
/// configuration
var bus = Bus.Create(busConfiguration);
return bus;
这是正确的做法的方法?我应该使用为每个处理程序创建总线的新实例的Factory还是可以有SingleTon总线实例?处理程序在Web API控制器中执行。
注册后还需要启动总线吗? – Raffaeu 2014-10-09 14:15:00
是的,上面显示的步骤是创建配置的一部分,该配置传递给Bus.Create。再次,我假设你正在使用5.x. – 2014-10-09 15:07:33
是的,它的工作原理和是我正在版本5 实际上NServiceBus上的所有文档都反对4 API语法,这是非常不同的,并且他们声明所有Fluent API已经过时,所以我们甚至不能使用旧语法编译5。 顺便说一句,它的工作原理,谢谢! – Raffaeu 2014-10-09 15:14:13