带有 akka-persistance 的事件源:作为列表的增长状态?
Event-sourcing with akka-persistance: growing state as list?
我正在使用 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 示例项目:这个想法似乎是每个用户都应该由不同的参与者持有,并根据需要加载(从事件历史记录)。
正确的做法是什么?非常感谢。
答案是:每个 aggregate/entity(在我的例子中,每个用户)都有自己的参与者,它嵌入了那个特定实体的状态,并且只嵌入了那个实体。
我正在使用 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 示例项目:这个想法似乎是每个用户都应该由不同的参与者持有,并根据需要加载(从事件历史记录)。
正确的做法是什么?非常感谢。
答案是:每个 aggregate/entity(在我的例子中,每个用户)都有自己的参与者,它嵌入了那个特定实体的状态,并且只嵌入了那个实体。