我目前正在调查大众运输。我基于 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 以等待所有 X 订阅者在完成之前响应给定消息?