我正在使用Akka Scala设计使用CQRS事件采购的后端 . 我不确定如何应对不断增长的状态 . 例如,我将有越来越多的用户 . 据我了解,每个用户都将在UserCreated事件之后创建,这些事件将由PersistentActor重播,用户将存储在一个集合中 . 就像是:
class UsersActor extends PersistentActor {
override def persistenceId = ....
private case class UsersState(users: List[User])
private var state = UsersState()
....
}
显然这样的状态最终会变得太大而不能被这个演员留在记忆中,所以我想我做错了 .
我找到了this示例项目:想法似乎每个用户都应该由不同的actor持有,并根据需要加载(从事件历史记录) .
这样做的正确方法是什么?非常感谢 .
1 回答
答案是:每个聚合/实体(在我的例子中,每个用户)都有自己的actor,它嵌入该特定实体的状态而只有那个实体 .