0

我正在寻找一个问题的答案,即当我使用事件溯源时,如何使两个有界上下文最终保持一致?我的意思是我将一些值从一个上下文的实体复制到另一个上下文的值对象的情况。我知道我可以在值更改时使用域事件来获取通知,但是如何更新我的事件存储中使用这些值的所有这些聚合?很难通过 id 以外的任何其他属性从事件存储中查询聚合。

例子:

身份背景:

  • 用户(id、用户名、密码、电子邮件)- 聚合根

讨论背景:

  • Author (id,userame) - 值对象(这些值来自身份上下文)
  • 消息(id、内容、作者) - 聚合根
4

1 回答 1

1

我不确定在(AuthorId, username)这里制作价值对象是一个不错的选择。

  • 用户名很可能不是 Message 聚合中的关键数据。基于 username 的聚合会强制执行什么不变量?

  • 您可能已经安装了 CQRS(不是吗?),因此可以通过读取模型而不是聚合本身来检索消息的用户名。

我将在讨论上下文中创建一个独立的作者聚合,并让消息仅由 AuthorId 引用。当事件从 Identity 到达时,您只需通过 AuthorId 找到聚合并对其执行任何您需要执行的操作。

于 2016-03-24T14:07:52.127 回答