首页 > 解决方案 > 聚合事件溯源的版本

问题描述


根据事件溯源。调用命令时,必须存储域的所有事件。
对于每个事件,系统必须增加聚合的版本。我的事件存储是这样的:

(AggregateId, AggregateVersion, Sequence, Data, EventName, CreatedDate)
(AggregateId, AggregateVersion) 是关键

在某些情况下,增加聚合的版本没有意义。例如,一个命令注册用户并引发 RegisteredUser、WelcomeEmailEvent、GiftCardEvent。

我该如何处理这个问题?

标签: aggregatedomain-driven-designevent-sourcingdomain-events

解决方案


我该如何处理这个问题?

避免将您的信息表示更改事件与您在其他地方发布使用的事件混淆。

domain-drive-design“事件溯源”,在和空间中的普遍理解cqrs,是一种数据模型。我们具体讨论的是聚合发送给未来自我的消息,这些消息描述了它自己随时间的变化。

它“只是”另一种存储聚合状态的方式,就像我们将信息存储在关系数据库或文档存储等中一样。

我们将要发送到其他组件然后忘记的消息不需要在事件流中包含事件。


在某些情况下,当我们没有认识到有多个不同的过程在起作用时,可能会产生混淆。

“当新用户注册时,我们应该向他们发送欢迎电子邮件”之类的要求不一定是注册过程的一部分;相反,它可能是一个由RegisteredUser事件的出现触发的独立过程。您需要为 SendEmail 流程保存的信息将在“其他地方”——在用户事件历史记录之外。


推荐阅读