2

在 NServiceBus 3.0.3 中,我写了一个传奇。根据我在 CQRS 范式中所看到的,当我们看到过去时,这应该与一个事件相吻合。我想确保我的传奇中没有业务逻辑。我在构建 saga 时的假设是,它将接收事件并根据传入的事件以及存储在 saga 中的某些数据元素发出命令。我遇到的问题是 Saga 默认情况下无法订阅已发布的事件。我已经尝试在 EndPointConfig 中设置 IWantToRunAtStartup 并在 Run 方法中执行

Bus.Subscribe<CustomerBilledEvent>();  

我试过用 saga 在同一个程序集中创建一个处理程序,但仍然没有骰子。

我的 saga(由 Nservicebus.host.exe 托管)和发布者(控制台应用程序中的服务)的 app.config 都具有这样配置的消息端点

 <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)。

4

1 回答 1

1

所以问题是你已经设置了你的 saga 试图订阅“orderservice”端点以接收有关 CustomerBilledEvent 的通知,但该端点没有发布它。

于 2012-04-10T12:52:33.077 回答