【问题标题】:Issuing Commands to create N of the same type of event发布命令创建 N 个相同类型的事件
【发布时间】:2018-07-10 08:48:18
【问题描述】:

在我的事件溯源模型中,我有一个以仓库为模型的聚合。为此,我发出了诸如CreateBoxChangeBoxLocation 之类的命令。

使用CreateBox 命令,我实现了它,使其与事件具有1:n 关系。也就是说,一个有效的CreateBox 命令将调度两个事件:BoxCreatedBoxLocationChanged,因为添加的盒子应该被移动到一个位置。

我注意到系统的用户实际上是在批量向系统添加盒子。例如,可能有 300 个相同类型的盒子进来,他们会一次将它们全部扫描到系统中(而不是单独扫描每个盒子)。

这让我想到了实现CreateBoxesInBulk 命令的想法,如果该命令有效,将分派BoxCreatedBoxLocationChanged N 次,其中N 是批量扫描的框数。

我的问题很简单,这是一种有效的方法吗?

另外:这会导致哪些潜在的并发症?我认为复杂性可能会受到此命令的影响,并且可能为聚合实现快照优化会是有益的。

【问题讨论】:

    标签: architecture domain-driven-design cqrs event-sourcing


    【解决方案1】:

    这是一种有效的方法吗?

    是的 - 从单个命令派生 N 个事件没有任何问题。

    这会导致哪些潜在并发症?

    找出正确的事件分组。

    将 N 个事件写入单个文档/流通常没问题。

    将 N 个事件写入 N 个文档/流是可以的,如果您可以将每个事件的写入视为独立的事情(没有要维护的不变量,或者丢失与他们自己的个人文档的不变量)。

    试图将N个不同文档的不变量作为一个集合来管理;那很痛苦。发生数据竞争,除了最后一个事件之外的所有事件都可以正确写入。现在呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多