发出命令创建 N 个相同类型的事件

Issuing Commands to create N of the same type of event

在我的事件溯源模型中,我有一个以仓库为模型的聚合。为此,我发出了 CreateBoxChangeBoxLocation.

这样的命令

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

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

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

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

另外:这会导致哪些潜在的并发症?我认为复杂性可能会受到此命令的影响,也许对聚合实施快照优化会有所帮助。

is this a valid approach?

是的 - 从单个命令派生 N 个事件没有错。

What potential complications could this cause?

找出正确的事件分组。

将 N 个事件写入单个 document/stream 通常没问题。

将N个事件写入N个documents/streams就可以了,如果你能把每个事件的写入当作一个独立的东西(没有要维护的不变量,或者如果丢掉那些事件也可以)不符合自己个别文档的不变量)。

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