我有应用 聚合,它可以处理命令,如注册,安装 >,卸载,隐藏,显示, ChangeOwner ,发布, CancelPublication ...... 应用程序 聚合中大约有20个命令。每个命令检查 Application 的不变量,例如 Application 可以是:
应用会生成相应的事件。 事件由投影和流程管理器处理。
我有应用和统计 投影-他们处理来自应用 汇总,两个 projections 都是基于 events 的100%,因此 projections 可以完全删除并从头开始重建。用户通过 http:get端点
请求应用和统计 投影问题:
现在,我收到业务分析的请求,以跟踪潜在客户打开的应用程序的时间。通过打开,他们了解潜在客户会看到应用 投影详细信息,例如(名称,描述,价格,功能,优势,安装数量,评论。 ..)。
现在,我想知道是否可以在应用程序 聚合中创建 Open 命令。它不会改变 aggregate 状态,不变性与此无关。由于统计信息投影,仅需要此命令。
另一个问题是每天可能会访问数百次应用,因此当 aggregate 被设置时,它会产生大量的事件来处理。加载到内存中。
您是否认为在应用程序中创建打开 命令以便发出 Opened 事件是解决此问题的好方法吗?
答案 0 :(得分:2)
应用汇总可以拒绝 Open 命令吗? 如果不能,那真的是命令吗?
如果聚合的当前状态不允许执行该命令,我们将向聚合发出命令以验证它们,并可能拒绝它们。
如果不能拒绝 Open 命令,并且您仍然决心通过事件解决用户跟踪,则可以考虑简单地发出 ApplicationOpened 事件,而不发出汇总命令。
另一种选择可能是完全跟踪另一个系统中的用户操作和统计信息,也许只是向数据库表中添加行。