我非常熟悉PersistentActor和PersistentView在实现Akka Persistence时是如何工作的。
据我所知,考虑下面的例子。
Scala 案例类Contact。
case class Contact(id: String, version: Int, fName: String, lName: String, age: Int)
日志中的 PersistentActor 持久事件是:
ContactCreated("123af-232ff-232d", 1, "john", "doe", 25)
FirstNameChanged("123af-232ff-232d", 2, "jan")
AgeChanged("123af-232ff-232d", 3, 27)
FirstNameChanged("123af-232ff-232d", 4, "janet")
每次从响应式 UI 发送命令时,如果验证成功 202 CommandAccepted 或任何 CommandValidationError 被触发,则此类新事件将持续存在。
但是在响应式环境没有明显延迟的情况下,UI 必须能够查询REST API 后端并在后端WebSocket 推送通知 UI UUID "123af-232ff-232d" 可供读取后显示最新的Contact 对象:
Contact("123af-232ff-232d", 4, "janet", "doe", 27)
据我了解,此结果应在将所有事件与可用的最新数据合并后发生。
所以,我真正关心的是:在这个后端应用程序中,我如何以及在哪里处理这些事件,一旦它们生成,合并这些数据,并存储合并的数据以供查询端读取。
如果有人可以阐明实施或纠正我的想法,请提前非常感谢。