【发布时间】:2013-11-24 12:04:13
【问题描述】:
我目前正在调查公共交通。我基于 Starbucks 示例编写了一个简单的示例。
我有以下传奇:
Define(() =>
{
Initially(
When(ReportRequest)
.Then((saga, message) => saga.ProcessReportRequest(message))
.TransitionTo(WaitingForReportToComplete)
);
During(WaitingForReportToComplete, When(ReportComplete)
.Then((saga, message) =>
{
Console.WriteLine("Report Complete for '{0}'", saga.Name);
saga.CompleteReportRequest(message);
})
.Complete()
);
});
我遇到的问题是我有 X 个订阅者到 ReportRequest 事件并且每个订阅者创建报告的一小部分。因此,为了使报告被认为是完整的,所有订阅者都需要发出ReportComplete 事件。目前,第一个完成的订阅者发出 ReportComplete 事件,然后 saga 也完成了。
如何设置 saga 以等待所有 X 订阅者在完成之前对给定消息做出响应?
【问题讨论】:
-
见stackoverflow.com/questions/20347748/…;虽然您可以使用 MSMQ(不太可能是 RabbitMQ)有效地检查管道,但这仍然不是您应该构建解决方案的方式。这不是 pub/sub 的用途,需要将其引入您的应用程序级别。
标签: msmq masstransit