在NServiceBus 3.0.3中我编写了一个传奇故事。根据我在CQRS范例中看到的情况,当我们看到过去时,这应该与事件一致。我想确保在我的传奇中没有商业逻辑。我构建传奇的假设是,它会根据传入的事件以及存储在传奇上的某些数据元素接收事件并发出命令。我遇到的问题是Saga默认不能订阅已发布的事件。我已尝试在EndPointConfig中设置IWantToRunAtStartup并在Run方法中执行
Bus.Subscribe<CustomerBilledEvent>();
我尝试使用saga在同一个程序集中创建一个处理程序,但仍然没有骰子。
我的app.config for saga(由Nservicebus.host.exe托管)和发布者(控制台应用程序中的服务)都将消息端点配置为
<add Messages="Events.CustomerBilledEvent, Events" Endpoint="orderservice"/>
已在Saga上配置了IHandleMessages,并且已在orderid上配置了映射。
IHandleMessages<CustomerBilledEvent>
ConfigureMapping<CustomerBilledEvent>(s => s.OrderId, m=> m.OrderId);
我有点迷失为什么我不能让Saga订阅这个活动。我知道默认情况下他们不会自动订阅,但是当我查看Udi和John的博客下的示例时,我看到过去时被发送(IEvent?)到saga并且他们发出了Bus.Send,我推断它是命令(ICommand的)。
答案 0 :(得分:1)
所以问题是你已经设置了你的saga试图订阅“orderservice”端点以获得有关CustomerBilledEvent的通知,但该端点没有发布它。