Nservicebus:差异传奇始于同一事件
Nservice bus: Different sagas started with the same event
是否可以使用相同的启动消息和相同的端点启动不同的传奇?
例如我想处理一条消息"user-signed-in"。
我有 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。
是否可以使用相同的启动消息和相同的端点启动不同的传奇?
例如我想处理一条消息"user-signed-in"。
我有 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。