在我的应用程序中,创建用户时,会抛出一个名为UserCreatedEvent
的事件。
此用户必须从Facebook检索所有描述数据(当然是他的授权),并且应该通过一些自定义流程来处理。
我选择在保存用户聚合这一事实与检索所有描述数据并应用它们之间应用最终一致性(使用Akka及其eventStream功能来处理事件),因为它涉及到Facebook的一些呼叫网络。
关键是我还允许任何新创建的用户通过REST api PUT /api/users/:id
覆盖一些描述(作业,年龄等)。
1)处理UserCreatedEvent
(基本上是Akka演员)的过程是否应该调用此api(导致间接)来分配默认用户描述(来自Facebook),还是应该检索并更新用户本身?
2)处理UserCreatedEvent
的过程和旨在管理用户(CRUD)的api是否应该属于同一个有界上下文? (在这种情况下,不建议涉及间接)。
答案 0 :(得分:1)
我不确定我会称之为最终的一致性,因为一致性(确保实体尊重不变量)不会受到威胁。这更像是带外异步数据完成。
这个副流程必须再次经历的基本取决于你的背景:
REST API如果你想重新申请重要的东西(日志记录,安全性等等)
应用服务/命令处理程序层,如果您希望通过适当的验证将数据完成视为完整的修改(例如,Facebook是否返回了应用程序中不支持的数据?)
在域图层中,您可以将其建模为User
的任何其他修改,或者作为特定的,可能更具意图揭示的操作:User.completeDescriptionData(...)
我不一定将其置于不同的Bounded Context中,因为它没有引入User的新定义。重要的是,知道与Facebook交谈的细节的细节部分是在一个单独的非域层中。