仅当角色代表的实体先前已创建时才实例化角色的Akka模式?

时间:2018-09-04 01:00:25

标签: scala akka akka-persistence

如果以前根据域规则正式创建的actor,如何才能加载它?我使用actorOf和持久性看到的所有内容始终会创建一个空实例,然后应用已发生的事件[可能为空],而我希望使空实例无法表示。是否存在要求“创建”事件并通过“未找到”触发失败的标准方法?

我的想法是为系统中的每个实体都拥有一个actor实例,但是我期望在任何给定时间,少于10%的实体将被积极使用,因此我试图避免仅加载整个集合在处理请求时检查有效性。

我是Akka和事件采购的新手,因此,如果我从无益的角度考虑问题,那么我也欢迎其他选择。

1 个答案:

答案 0 :(得分:1)

我猜您在谈论PersistentActors。 在PersistentActor之外没有用于预持久状态的api。这个想法是演员自己为自己跟踪状态。空的参与者没有任何收益,参与者应该保持某种状态,因此通过actorOf对其进行初始化时,它应该具有某种状态Created。另一方面,您不应该认为它已经保存了状态,直到它向创建者报告它已被保留。

仅当显式初始化持久性参与者时,它们才会被被动地加载到内存中,因此不会在启动时加载所有实体。如果要钝化它们,可以停止actor或在actor的上下文上调用setReceiveTimeout方法。