演员从演员中查找的最佳实践

时间:2013-09-30 09:33:09

标签: scala akka akka-cluster

我正在使用akka 2.2.x.在群集模式下。我的问题与演员查找有关。

我有两种演员:

  • processor。它接受文本并以某种方式处理它
  • result collector。接受来自processor的消息并汇总结果。

Processor actor需要向result collector发送消息。所以,我需要ActorRefprocessor

问题是 - 如何将此ActorRef传递/查找到processor

我现在有3种不同的解决方案:

  1. 在创建时查找ActorRefprocessor,并将ActorRef作为构造参数传递。看起来可能是错误的,因为它不处理actor重启过程而且不适合集群环境。

  2. 使用preStartcontext.actorSelection("../result-collector")中查找。在此之后,我有ActorSelection的对象,可以使用!发送消息。在这个解决方案中,我知道由于在每次调用之前在集群中查找而导致性能下降。或者我错了吗?

  3. preStart中使用context.actorSelection("../result-collector") 查询resolveOne以获取ActorRef。看起来不错,但可能无法处理akka群集更改。

  4. 谢谢!

1 个答案:

答案 0 :(得分:2)

使用#1时,无论是重启还是群集都没有问题。查找仅在ActorRef无法通过任何其他方式可用的情况下有用。