我可以通过AND启动NserviceBus传奇来处理相同的消息吗?

时间:2011-12-11 19:21:37

标签: nservicebus

快速提问:我有一个传奇,它可能有一个需要处理可能在两种情况下出现的消息的场景。一个传奇仍在开放的地方,一个传奇被标记为完整的地方。

如果传奇开放,很棒,继续正常。如果传奇没有打开,它需要开始一个新的传奇。处理这种情况的最佳做法是什么?如果传奇是开放的,IHandleMessages<>显然很有效。但IAmStartedByMessages<>不会导致两个传奇开放吗?这会很糟糕。感谢

3 个答案:

答案 0 :(得分:4)

如果可以解决已经打开的传奇,

IAmStartedByMessages<>将不会导致2个传奇打开。你可以使用IAmStartedByMessages<>而不需要IHandleMessages<>

答案 1 :(得分:2)

您仍然可以使用IAmStartedByMessages&lt;&gt;处理邮件只要您确保将其包含在ConfigureMapping覆盖中。这样,根据您找到现有saga的方式,您将返回现有实例或创建新实例。 HTH。

答案 2 :(得分:1)

正如我从NserviceBus看到的那样,如果发现一些处理消息的传奇,新的传奇将无法启动。 (我检查了NBus 2.0)

所以你的场景应该正常工作。您可以从示例应用程序中轻松检查这一点。

然而,你描述的情况相当奇怪。我宁愿有两种消息类型,一种用于传奇开始,另一种用于传奇工作。