Spring Boot和EventStoreDB事件溯源案例

22-03-30 banq

使用Spring Boot和EventStoreDB的Event Sourcing:
案例展示了基本的事件追溯流程。它使用EventStoreDB进行事件存储,使用Spring Data JPA支持PostgreSQL进行读取模型。

所展示的用例是购物车流程:
  • 客户只有在打开购物车后才可以将产品添加到购物车中。
  • 当选择和添加一个产品到购物篮时,客户需要提供所选择的数量。产品价格是由系统根据当前的价格表计算的。
  • 顾客可以从购物车中删除一个给定价格的产品。
  • 顾客可以确认购物车,并开始订单执行过程。
  • 顾客也可以取消购物车,拒绝所有选定的产品。
  • 在确认或取消购物车后,产品不能再被添加或从购物车中删除。

从技术上讲,它的模型是用Spring Boot和Java 17编写的Web API。

 

概述

  • 纯数据实体、函数和处理程序。
  • 存储来自命令处理程序结果EventStoreDB的事件。
  • 使用Subscription to $all构建读取模型。
  • 读取的模型通过Spring Data JPA存储到Postgres的关系表中。
  • 应用程序有Swagger和预定义的docker-compose来运行和播放样本。

 

设计

  • 从写模型(EventStoreDB)和读模型部分(PostgreSQL和Spring Data JPA)解释事件源的基础知识。
  • 介绍你可以将经典的方法与事件源结合起来,而不需要进行大规模的革命。
  • CQRS架构按业务特征划分,将改变的代码保持在同一位置。请阅读更多关于如何有效地切分代码库的内容。
  • 为命令、事件、预测、查询处理提供干净的、可组合的(纯)功能,最大限度地减少对标记接口的需求。得益于此,可测试性和更容易维护。
  • 易于使用和不言自明的流畅的API,用于注册命令和预测,并有可能的回退。
  • 将所有东西都注册到常规的DI容器中,以便与其他应用服务集成。
  • 在边缘推动类型/签名的执行,所以当插入到DI时。


点击标题

1