使用akka-persistance进行事件采购:将状态增长为列表?

tic*_*fab 9 scala cqrs akka event-sourcing akka-persistence

我正在使用Akka + Scala使用CQRS +事件采购设计后端.我不确定如何应对不断增长的状态.例如,我将有越来越多的用户.据我了解,每个用户都将在UserCreated事件之后创建,这些事件将由PersistentActor重播,用户将存储在一个集合中.就像是:

class UsersActor extends PersistentActor {

    override def persistenceId = ....

    private case class UsersState(users: List[User])

    private var state = UsersState()

    ....
}
Run Code Online (Sandbox Code Playgroud)

显然这样的状态最终会变得太大而不能被这个演员留在记忆中,所以我想我做错了.

我找到了这个示例项目:想法似乎每个用户都应该由不同的actor持有,并根据需要加载(从事件历史记录中).

这样做的正确方法是什么?非常感谢.

tic*_*fab 2

答案是:每个聚合/实体(在我的示例中,每个用户)都有自己的参与者,该参与者仅嵌入该特定实体的状态。