开发指南
这些页面每页说明怎样做一件事,代码取自仓库里的示例。它们以概念里的思想为前提;每一页都链接到它所依据的概念。
领域建模
| 页面 | 说明怎样 |
|---|---|
| 编写聚合 | 编写命令、命令函数和状态;使用服务;创建聚合;向内核要结果、键和定时 |
| 拒绝与错误码 | 用声明的错误码拒绝命令,并以调用方、对端、Saga 或测试的身份读取它 |
| 演进事件 | 用修订号和升级函数改变事件;重命名和退役事件;改变状态的结构 |
| 所有者、空间与标签 | 决定聚合归谁所有、核对调用方、转移所有者、给聚合打标签 |
| 唯一键 | 让一个值在聚合之间保持唯一 |
流程
| 页面 | 说明怎样 |
|---|---|
| 编写 Saga | 从事件派生命令;处理它们的成功和拒绝;调用另一个上下文 |
| 投影与反应器 | 写出读模型;对外部世界采取行动;让两者都保持幂等 |
| 定时命令 | 从决定或 Saga 中定时一条命令;运行周期性任务 |
| 失败与重试 | 给处理函数它自己的重试预算;为失败分类;恢复停放的聚合 |
读侧
| 页面 | 说明怎样 |
|---|---|
| 读取状态 | 读取聚合在任意版本或时刻的状态、缓存它、写后即可查 |
| 查询快照 | 按状态查找聚合,用 Kotlin 或经 HTTP;声明索引和脱敏 |
| 查询事件流 | 查询日志,每次提交一行;分析事件 |
| 从服务发布数据集 | 基于数仓声明数据集,限定范围并脱敏,然后查询它 |
跨上下文
| 页面 | 说明怎样 |
|---|---|
| 发布与消费事件流 | 选择上下文发布什么;用对端自己的类读取它的事件流 |
| 调用其他服务 | 用类型化的客户端发送命令:进程内、经主题或经 HTTP |
契约
| 页面 | 说明怎样 |
|---|---|
| 提供和调用 HTTP API | 认证调用方、发送命令、等待、重试、流式读取、读取错误 |
| Manifest 与兼容 | 构建和合并契约,把对端需要的部分交给对端,让改变保持兼容 |
| OpenAPI 与 springdoc | 获取 OpenAPI 文档,并把它合并进 springdoc 的文档 |
| 编译器生成什么 | 了解模型工厂、处理函数、查询字段、绑定索引和契约代码 |
测试
| 页面 | 说明怎样 |
|---|---|
| 测试领域代码 | 用测试 DSL 测试聚合、Saga、投影、反应器和任务 |
| 测试服务 | 在它的 JVM 中、在真实存储上、对照它的契约测试整个服务 |
宿主
| 页面 | 说明怎样 |
|---|---|
| 在 Spring Boot 上运行 | 运行服务:宿主装配什么、用哪个后端、用哪些 Bean |
| 用 Java 编写领域 | 用 Java 编写领域,以及 Java 目前还做不到的事 |