我应该更新每个事件的读取模型吗?



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

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

我现在做的是:

  1. 节省NewOrderEvent
  2. 获取或创建Customer读取模型
  3. 调用更改Customer状态的Customer.ApplyEvent(NewOrderEvent)
  4. 保存Customer读取模型

我错过了什么吗?

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

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

对我来说

看起来不错。您可能决定重播事件流,以便仅在引入新内容时才重新创建读取模型。

每当架构更改时,有些人都会重建读取模型,但在许多情况下,您可以使用迁移来实现此目的。实际上取决于您的应用程序。

最新更新