c4k*_*c4k 4 java cqrs event-sourcing
我正在使用CQRS和Event Sourcing实施一个项目.我意识到我的命令和我的事件几乎总是一样的.
假设我有一个命令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;
}
你如何处理你的应用程序?
编辑:当然我知道基本的OOP技术.我可以创建具有公共字段的抽象,但是这个问题需要在CQRS/ES上下文中进行.
如何避免在命令和事件之间重复字段?
我不会 - 直到我绝对不能忍受它.
从根本上说,命令和事件不是对象,它们是消息 - 跨越边界的状态表示.我认为你的记忆表现不要忽视这一点很重要.
消息模式的一个特征是它们随着时间的推移而发展,因此您需要了解兼容性.这里是踢球者:事件和命令在不同的时间尺度上发展.
命令消息是域模型与其他进程通信的方式; API部分的更改由公开/弃用功能驱动.
但是在事件源世界中,事件是从先前版本的域到当前版本的消息.它们是我们部署新模型所需支持的一部分,这些模型可以从旧模型中断的地方恢复工作.
所以我会让命令和事件彼此分开 - 它们是不同的东西.
如果你在字段中看到很多重复,那么可能暗示有一些你还没有明确表达的值类型.
CreatePost 
    { Post 
        { Title
        , Contents
        }
    }
PostCreated
    { Post 
        { Title
        , Contents
        }
    }
| 归档时间: | 
 | 
| 查看次数: | 519 次 | 
| 最近记录: |