控制命令流和结果CQS / CQRS等

时间:2019-01-15 22:50:16

标签: architecture cqrs

我在宠物项目中正在使用CQS / CQRS / Command总线等。

某些环境:

  • Project-用于由任务管理器计算KPI的应用程序。
  • 查询-在这种情况下不重要。
  • 所有命令都是异步的
  • 命令
    • SyncVersionTasks(VersionId),通过特定版本ID同步任务
    • SyncTaskHistory(TaskId),按任务ID同步详细的任务历史记录
    • CalclulateKPI(VersionId),根据版本的任务历史记录计算版本的kpi

现在如何工作:

用户具有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查询中等待结果的人=>通知他们

0 个答案:

没有答案