Nservice巴士:不同的传奇开始于同一事件

时间:2018-01-31 18:06:54

标签: nservicebus

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

例如,我想处理一条消息“user-signed-in”。

我有两种不同的传奇,应该从上面的消息开始:

  1. 将等到用户退出并发布一些活动。
  2. 第二个将等到他购买一些产品并将发布活动。
  3. 那种传奇是完全不同的,并且有不同的类名和传奇数据类名称。

    问题是:当“用户登录”消息出现时,两个sagas都会启动吗?

1 个答案:

答案 0 :(得分:3)

端点收到的单条消息可以启动多个传奇。

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

public class UserSessionSaga : IAmStartedByMessages<UserSignedIn>...

public class UserPurchasesSaga : IAmStartedByMessages<UserSignedIn>...

UserSessionSaga将通过与完成UserPurchasesSaga的活动不同的活动(退出)完成。为此,您必须使用IHandleMessages<T>指定每个saga可以处理的其他消息,并关联每个saga可以处理的所有消息。有关语法,请参阅documentation here