我正在使用akka 2.2.x.在群集模式下。我的问题与演员查找有关。
我有两种演员:
processor
。它接受文本并以某种方式处理它result collector
。接受来自processor
的消息并汇总结果。 Processor
actor需要向result collector
发送消息。所以,我需要ActorRef
内processor
。
问题是 - 如何将此ActorRef
传递/查找到processor
。
我现在有3种不同的解决方案:
在创建时查找ActorRef
到processor
,并将ActorRef
作为构造参数传递。看起来可能是错误的,因为它不处理actor重启过程而且不适合集群环境。
使用preStart
在context.actorSelection("../result-collector")
中查找。在此之后,我有ActorSelection
的对象,可以使用!
发送消息。在这个解决方案中,我知道由于在每次调用之前在集群中查找而导致性能下降。或者我错了吗?
在preStart
中使用context.actorSelection("../result-collector")
和查询resolveOne
以获取ActorRef
。看起来不错,但可能无法处理akka群集更改。
谢谢!
答案 0 :(得分:2)
使用#1时,无论是重启还是群集都没有问题。查找仅在ActorRef无法通过任何其他方式可用的情况下有用。