Nservicebus:差异传奇始于同一事件

Nservice bus: Different sagas started with the same event

是否可以使用相同的启动消息和相同的端点启动不同的传奇?

例如我想处理一条消息"user-signed-in"。

我有 2 个不同的故事,应该以上面的消息开头:

  1. 将等到用户注销并发布一些事件。
  2. 第二个会等到他购买了一些产品并发布活动。

sagas 完全不同并且具有不同的 class 名称和 saga 数据 class 名称。

问题是:当 "user-signed-in" 消息到来时,两个 sagas 都会开始吗?

端点接收到的单个消息可以启动多个 sagas。

您需要将两个传奇都标记为由该消息类型启动。例如:

public class UserSessionSaga : IAmStartedByMessages<UserSignedIn>...

public class UserPurchasesSaga : IAmStartedByMessages<UserSignedIn>...

UserSessionSaga 将通过不同于完成 UserPurchasesSaga 的事件(注销)完成。为此,您必须使用 IHandleMessages<T> 指定每个 saga 可以处理的附加消息,并关联每个 saga 可以处理的所有消息。有关语法,请参阅 documentation here