aggregate - 聚合事件溯源的版本
问题描述
根据事件溯源。调用命令时,必须存储域的所有事件。
对于每个事件,系统必须增加聚合的版本。我的事件存储是这样的:
(AggregateId, AggregateVersion, Sequence, Data, EventName, CreatedDate)
(AggregateId, AggregateVersion) 是关键
在某些情况下,增加聚合的版本没有意义。例如,一个命令注册用户并引发 RegisteredUser、WelcomeEmailEvent、GiftCardEvent。
我该如何处理这个问题?
解决方案
我该如何处理这个问题?
避免将您的信息表示更改事件与您在其他地方发布使用的事件混淆。
domain-drive-design
“事件溯源”,在和空间中的普遍理解cqrs
,是一种数据模型。我们具体讨论的是聚合发送给未来自我的消息,这些消息描述了它自己随时间的变化。
它“只是”另一种存储聚合状态的方式,就像我们将信息存储在关系数据库或文档存储等中一样。
我们将要发送到其他组件然后忘记的消息不需要在事件流中包含事件。
在某些情况下,当我们没有认识到有多个不同的过程在起作用时,可能会产生混淆。
“当新用户注册时,我们应该向他们发送欢迎电子邮件”之类的要求不一定是注册过程的一部分;相反,它可能是一个由RegisteredUser
事件的出现触发的独立过程。您需要为 SendEmail 流程保存的信息将在“其他地方”——在用户事件历史记录之外。
推荐阅读
- android - 为什么 Android 连接到 SQL 数据库不起作用
- python - 提取有效 ips 和有效 ftp 地址的程序
- javascript - JavaScript 问题,它返回意外的值
- sql - 如何在sql中根据条件连接两个表?
- julia - 如何从 Julia 中的函数返回多个值?
- azure-devops - PR 完成后在浏览器中显示 Azure DevOps 上的自定义对话框
- java - 尝试在 MacOS 上运行 Java 相关命令时出错
- reactjs - 在 MUIDatatable 中的分页或过滤期间未显示加载程序
- javascript - 在域 Y 上定位来自域 X 的访问者
- bootstrap-4 - 使用引导类“collapsibe”将 dc.js 图表插入 div 时会变小