lokad -iddd-sample代码实现了 Vaughn Vernon 书中讨论的 cqrs+es 写入端。不幸的是,读取模型方面是不完整的。有没有人知道实现读取模型端的工作版本的类似代码(理想情况下基于 Vaughn Vernon 的书)?
1 回答
问题是几乎所有使用 cqrs+es 的开源代码库要么基于绝望的琐碎示例。因此,它们只展示基础知识,并剥夺了您展示复杂情况的好例子。让它们,imo,对所有人都没有用,但对这些概念有一种感觉。
因此,以“工作版本”为例,取决于您如何定义它。如果您正在寻找简单的东西,那么有大量的 OSS 项目示例,其中有一个 readmodel 的“工作示例”。只需使用谷歌。
实现 readmodel 可以说是 ES/CQRS 最简单的方面。当与 ES 结合使用时,您的聚合根会发出事件,然后您订阅这些事件。
使用这些事件可以让您构建您的读取模型,一次一小块。如何根据实体定义 readmodel 取决于您。这里没有对错。这完全取决于您要解决什么样的问题。
例如:当接收到一个 OrganisationCreated 事件时,我是否创建了一个可以直接检索的单一组织实体?当然,如果您有需要这种表示的详细视图,为什么不呢。
但是,除了那个单一实体之外,您是否保留一个包含所有已知组织的单独列表实体,或者只是对组织实体执行查询(如果愿意,请从其中选择*)并像这样构建我的结果?再一次,这一切都取决于您的要求。
使用 ES 最好的部分是您可以更改您的 readmodel,或者简单地引入新实体而没有太多问题。你总是可以从你的 ES 重建你的 readmodel。