Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Akka模式,仅当参与者所代表的实体之前已创建时才实例化参与者?_Scala_Akka_Akka Persistence - Fatal编程技术网

Scala Akka模式,仅当参与者所代表的实体之前已创建时才实例化参与者?

Scala Akka模式,仅当参与者所代表的实体之前已创建时才实例化参与者?,scala,akka,akka-persistence,Scala,Akka,Akka Persistence,如果一个参与者以前是按照域规则正式创建的,我如何才能加载它?我所看到的使用actorOf和persistence的一切都会创建一个空实例,然后应用已经发生的[可能是空的]事件集,而我更喜欢使空实例不可表示。是否有标准方法要求“创建”事件,或通过“未找到”触发故障 我的想法是让系统中的每个实体都有一个actor实例,但我的期望是,在任何给定的时间都不到10%的实体将被有效地使用,因此我试图避免在处理请求时仅仅为了检查有效性而加载整个集合 一般来说,我对Akka和事件资源部都是新手,所以如果我从一个

如果一个参与者以前是按照域规则正式创建的,我如何才能加载它?我所看到的使用actorOf和persistence的一切都会创建一个空实例,然后应用已经发生的[可能是空的]事件集,而我更喜欢使空实例不可表示。是否有标准方法要求“创建”事件,或通过“未找到”触发故障

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


一般来说,我对Akka和事件资源部都是新手,所以如果我从一个没有帮助的角度思考问题,我也愿意接受任何替代方案。

我想你说的是持久性因素。 在PersistentActor之外没有用于预持久化状态的api。这个想法是演员自己跟踪自己的状态。空的参与者没有任何好处,参与者应该保留一些状态,因此当您通过
actorOf
初始化它时,它应该有一种创建的状态。另一方面,您不应该认为它已经保存了它的状态,直到它向创建者报告它被持久化


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

谢谢。对
PersistentActor
是。我突然想到“创造”作为演员状态的一部分——这是正确的/最好的方法吗?我担心的是,要求“主管”检查其子级的创建状态似乎会破坏封装。我更希望在加载/初始化期间子实例触发器失败-您是否知道actor生命周期中有什么东西允许封装此类前置条件检查?当涉及到删除时,我会在另一端有一个类似的场景。如果您没有外部状态(例如数据库)如果您可以检查参与者实体的存在,那么您只能尝试初始化参与者,然后将参与者的当前状态从参与者本身发送到能够检查其状态是否正确的参与者。这取决于具体的情况,如何更好地检查(由主管或某个状态检查器参与者检查),以及在出现错误状态时谁应该停止检查。检查数据库可以解决需要将有效实体列表保留在主管内的问题,但我不希望出现带外逻辑。有一个“状态检查器”演员只是把责任转移到了其他第三方,我又回到了起点。那么,参与者初始化是否无法指示失败?或者也许我把这整件事想错了,我真的不应该把一个参与者和一个实体实例联系起来,在这种情况下,我应该使用什么方法呢?这是非常抽象的,实现取决于特定的情况。要指示失败,您只需在参与者中引发异常并覆盖父参与者的监控策略。您还可以通过调用父级中的
context.watch(childActorRef)
从子级订阅终止的消息