快速提问:我有一个传奇,它可能有一个需要处理可能在两种情况下出现的消息的场景。一个传奇仍在开放的地方,一个传奇被标记为完整的地方。
如果传奇开放,很棒,继续正常。如果传奇没有打开,它需要开始一个新的传奇。处理这种情况的最佳做法是什么?如果传奇是开放的,IHandleMessages<>
显然很有效。但IAmStartedByMessages<>
不会导致两个传奇开放吗?这会很糟糕。感谢
答案 0 :(得分:4)
IAmStartedByMessages<>
将不会导致2个传奇打开。你可以使用IAmStartedByMessages<>
而不需要IHandleMessages<>
。
答案 1 :(得分:2)
您仍然可以使用IAmStartedByMessages&lt;&gt;处理邮件只要您确保将其包含在ConfigureMapping覆盖中。这样,根据您找到现有saga的方式,您将返回现有实例或创建新实例。 HTH。
答案 2 :(得分:1)
正如我从NserviceBus看到的那样,如果发现一些处理消息的传奇,新的传奇将无法启动。 (我检查了NBus 2.0)
所以你的场景应该正常工作。您可以从示例应用程序中轻松检查这一点。
然而,你描述的情况相当奇怪。我宁愿有两种消息类型,一种用于传奇开始,另一种用于传奇工作。