我非常熟悉 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 backend 并在后端 WebSocket push 通知UI UUID "123af-232ff-232d"可供读取后显示最新的 Contact object :
Contact("123af-232ff-232d", 4, "janet", "doe", 27)
根据我的理解,将所有事件与可用的最新数据合并后,应该会发生此结果 .
所以,我的实际担忧是: How and where in this backend application I do the processing of those events as soon as they are generated, merge those data, and store the merged data for reading by the query side.
如果有人能够阐明实施或纠正我的想法,许多人会提前感谢 .
1 回答
Contact
的当前状态可能与实际状态不同,在视图中,您将不会接受视图的最终一致性 .我会将其保持为持久化actor内的状态,并允许对actor进行查询以获取当前
Contact
并使用它 .