gpt4 book ai didi

java - CQRS 如何避免命令和事件之间的重复字段?

转载 作者:搜寻专家 更新时间:2023-11-01 01:40:31 26 4
gpt4 key购买 nike

我正在使用 CQRS 和事件溯源实现一个项目。我意识到我的命令和事件几乎总是相同的。

假设我有一个命令 CreatePost :

public class CreatePost implements Command {
private final String title;
private final String content;
}

此命令触发的事件是相同的:

public class PostCreated implements Event {
private final String title;
private final String content;
}

您如何在您的应用程序中处理它?<​​/p>

编辑:我当然了解基本的 OOP 技术。我可以创建一个具有公共(public)字段的抽象,但这个问题需要在 CQRS/ES 上下文中进行。

最佳答案

How to avoid repeating fields between command and event?

我不会 - 除非我完全无法忍受。

从根本上说,命令和事件 aren't objects ,它们是消息 - 跨越边界的状态表示。我认为重要的是您的内存表示不要忽视这一点。

消息模式的一个特点是它们会随着时间的推移而演变,因此您需要了解 compatibility .关键在于:事件和命令在不同的时间尺度上演变。

命令消息是您的域模型与其他进程通信的方式; API 的那部分更改是由公开/弃用功能驱动的。

但在事件源世界中,事件是从域的先前版本到当前版本的消息。它们是我们部署新模型所需的支持的一部分,这些新模型可以从旧模型中断的地方恢复工作。

所以我会将命令和事件彼此分开 - 它们是不同的东西。

如果您在字段中看到很多重复项,这可能暗示您还没有明确表示某些值类型。

CreatePost 
{ Post
{ Title
, Contents
}
}

PostCreated
{ Post
{ Title
, Contents
}
}

关于java - CQRS 如何避免命令和事件之间的重复字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45352874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com