【发布时间】:2018-03-04 10:53:01
【问题描述】:
我在 Web 应用程序上有一个复杂的注册表单。当用户提交该注册表单时,一个命令是 分派给命令处理程序。这将创建一个聚合。然后它将被持久化到非规范化的数据库中,并 也是一个活动商店。当此事务完成时,将发布一个事件。由于那个事件,另一个聚合最终将是 由事件处理程序创建。
只有在创建了两个聚合时,注册才真正完成。这应该发生在同一个过程中,但两者 有自己的交易。 (最终一致)
所以理论上AggregateOne 可能会同时保存到非规范化数据库和事件存储中,但是
AggregateTwo 可能由于错误或验证错误(例如:需要用户名)而在进程中的某处抛出异常。
这意味着我的注册不完整,因为只有一半的数据得到了持久化。但用户希望看到 他输入的所有数据。
在领域驱动设计中如何解决此类问题?
注意:我真的没有复杂的注册表单。这只是一个示例场景。我只是对如何解决这些问题感兴趣。
【问题讨论】:
标签: domain-driven-design aggregateroot