在事件采购模型中,我有一个以仓库为模型的汇总模型。为此,我发出了诸如CreateBox
和ChangeBoxLocation
之类的命令。
我使用CreateBox
命令实现了它,使其与事件之间具有 1:n 关系。也就是说,有效的CreateBox
命令将调度两个事件:BoxCreated
和BoxLocationChanged
,因为应该将添加的框移动到某个位置。
我注意到系统的用户实际上向系统中批量添加了盒子。例如,可能会放入300个相同类型的盒子,它们会一次将所有这些盒子扫描到系统中(而不是分别扫描每个盒子)。
这使我想到了执行CreateBoxesInBulk
命令的想法,该命令如果有效,将分派BoxCreated
和BoxLocationChanged
N次,其中N是批量扫描的箱子数。
我的问题很简单,这是一种有效的方法吗?
另外:这可能导致哪些潜在的并发症?我认为此命令可能会影响复杂性,也许对聚合实施快照优化将是有益的。
答案 0 :(得分:1)
这是有效的方法吗?
是的-从单个命令派生N个事件没有错。
这可能导致哪些潜在的并发症?
弄清楚事件的正确分组。
将N个事件写到单个文档/流中通常没问题。
将N个事件写入N个文档/流中就可以了,如果您可以将每个事件的写入视为独立的事情(没有要维护的不变性,或者可以丢失与事件无关的事件也可以)自己的个人文档不变)。
尝试将N个不同文档的不变性作为一个集合进行管理;那很痛苦。发生数据争用,并且除最后一个事件外的所有事件都可以正确写入。现在呢?