我应该更新每个事件的阅读模型

时间:2016-02-08 22:27:09

标签: cqrs event-sourcing

我有Customer读取模型需要在NewOrderEvent之后更新。

我想了解一件事,我应该在每个事件上更新我的阅读模型。或者我需要重播所有事件并替换读取模型。

我现在正在做的是:

  1. 保存NewOrderEvent
  2. 获取或创建Customer阅读模型
  3. 调用更改Customer.ApplyEvent(NewOrderEvent)状态的Customer
  4. 保存Customer阅读模型
  5. 我错过了什么吗?

2 个答案:

答案 0 :(得分:8)

通常是的,您希望每次有事件时都更新读取模型。但是,它只是一个简单的CRUD操作,一个db更新。当您想要(重新)生成新的读取模型时,事件的重放就完成了,因为您可能有数百万个事件,并且可能是一个非常长时间运行的操作。

顺便说一句,应该只为命令模型保留应用内容,以避免混淆。您将事件应用于域聚合根(实体),但您使用事件作为读取模型更新的数据源。

答案 1 :(得分:1)

对我来说很好看。您可以决定重播事件流,以便仅在您向其中引入新内容时才重新创建读取模型。

有些人会在架构更改时重建读取模型,但在许多情况下,您可以使用迁移。真的取决于你的申请。