事件采购:最终一致的有限背景

时间:2016-03-24 11:33:16

标签: domain-driven-design event-sourcing bounded-contexts

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

示例:

身份背景:

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

讨论背景:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

我会在Discussion上下文中创建一个独立的Author聚合,并且只有AuthorId才能引用它。当一个事件从Identity到达时,你只需要通过AuthorId找到聚合并做你需要做的任何事情。