我在宠物项目中正在使用CQS / CQRS / Command总线等。
某些环境:
现在如何工作:
用户具有UI按钮-计算版本ID:100的KPI。 用户单击此按钮-发出api请求。 API分派SyncVersionTasks(VersionId)命令。 之后,我为每个同步任务TaskSynced {id}发布事件 HistoryListener收听此TaskSynced {id}事件并调度SyncTaskHistory(TaskId)
问题:
1)仅在SyncTaskHistory(TaskId)更新了SyncVersionTasks(VersionId)接收的任务的所有历史记录之后,触发CalclulateKPI(VersionId)的最佳方法是什么?
解决方案之一-SAGA。但这是SAGA吗?....不是工程过度吗?
2)如何通知用户已计算出kpi?
我认为从api调用中放置UserId => SyncVersionTasks(VersionId)=> SyncTaskHistory(TaskId)=> CalclulateKPI(VersionId)不是一个好主意。可能的解决方案-将谁/何时/何地请求的数据写入缓存/数据库。使CalclulateKPI发布KpiCalculated事件,并在Listener查询中等待结果的人=>通知他们