我正在使用Akka持久性实现CQRS系统,我正在尝试理解CQRS的请求响应位。
关于如何将响应发送回客户端的问题很少有答案,this article也提到了一些好的模式。但是,有人可以解释如何在CQRS中将响应发送回客户端以用于以下简单用例。
用例
假设用户位于显示用户个人资料的页面上,该页面显示以下信息
在我的系统中,每个用户都有一个Actor,用于存储该用户的个人资料信息。
在UI上,用户想要更新地址,并发生以下情况:
UpdateUserAddressCommand(address:String)
已生成UpdateUserAddressEvent(address:String)
已生成UserAddressUpdatedEvent(updatedAddress:String)
(UserActor的状态已更新)现在如何在系统中发回UserProfile的完整状态?由于CQRS不鼓励发送命令的响应?
答案 0 :(得分:2)
对于CQRS模式,REST层可以被视为使用CQRS的系统的客户端,因此您可以发送响应(从REST服务器到Web浏览器)而不违反“原则”。
在你的情况下,这很简单:
/api/endpoint/1234
- > REST服务器按上述方式生成命令。Location:
标头设置为
像/api/user/profile/1234
/api/user/profile/1234
以查询UserProfile
。如果使用异步查询端更新/最终一致性,则可以将3.与HTTP长轮询结合使用。