快速问题:我有一个传奇故事,它可以有一个场景,它需要处理在两种情况下可能出现的消息。一个是传奇故事仍未结束的地方,另一个是传奇故事已被标记为完成的地方。
如果传奇是开放的,很好,照常继续。如果传奇没有打开,它需要开始一个新的传奇。处理这种情况的最佳实践是什么?显然,如果传奇是开放的,IHandleMessages<>
工作得很好。但是,IAmStartedByMessages<>
不会导致两个传奇被揭开吗?这将是很糟糕的。谢谢
发布于 2011-12-21 20:27:52
如果已经打开的saga可以解决,IAmStartedByMessages<>
将不会导致2个saga打开。不需要IHandleMessages<>
,只使用IAmStartedByMessages<>
就可以了。
发布于 2011-12-12 22:21:55
只要确保在ConfigureMapping覆盖中包含消息,您仍然可以使用IAmStartedByMessages<>处理消息。这样,根据您如何找到现有的saga,您将返回一个现有实例或创建一个新实例。HTH。
发布于 2011-12-12 23:28:37
正如我从NserviceBus资源中看到的,如果发现一些处理消息的saga,新的saga将不会启动。(我查看了NBus 2.0)
因此,您的方案应该可以正常工作。您可以很容易地从示例应用程序中检查这一点。
尽管如此,你描述的情况还是相当奇怪的。我更喜欢有两种消息类型,一种是saga start,另一种是saga work。
https://stackoverflow.com/questions/8466723
复制相似问题