scala - 使用 akka-persistence : growing state as list? 的事件溯源

标签 scala akka cqrs 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()

    ....
}

显然这样的状态最终会变得太大而无法被这个 Actor 记住,所以我想我做错了什么。

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

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

最佳答案

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

关于scala - 使用 akka-persistence : growing state as list? 的事件溯源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431691/

相关文章:

design-patterns - CQRS 中的实体与 DTO

scala - 将Akka流源分为两个

java - 如何将 Typesafe Akka 与 Node.js 结合使用

scala - 在 Spray 路由中调用 Actor 并等待 Actor 的响应

scala - spark停止时如何清理其他资源

c# - MVVM验证和DTO的用户反馈

scala - 在Slick中获得单项结果的最有效方法是什么?

scala - 如何迭代 Scalaz 中的树

java.sql.Timestamp 错误的时间解析

domain-driven-design - CQRS 和同步操作(如用户注册)