Akka actorFor vs传递ActorRef

Geo*_*off 16 scala akka

我正在学习阿卡,我试图找出如何让参与者互相交谈(让我们称他们AB).这不是一个请求/响应情景中,AB在任何时候都彼此发送消息.

目前我有两个兄弟姐妹演员在两个方向上互相传递信息.他们都是直接创建的ActorSystem.我最初通过ActorRefA进入的构造B.但我不能传递ActorRefB到的构造A,因为它不存在,即我不能用这个方法循环引用.

我一直在阅读actorFor,这会让我用它的路径查找一个演员.但是,我对这种设置不满意,因为如果路径发生变化,编译器就不会捕获它.

另一种选择,考虑到每一个演员可以访问到它的父,是从传递信息A,并B到父,然后让家长将消息传递回落到AB.但是这会将父节点与来回传递的消息类型联系起来.

人们使用什么策略让演员彼此了解?我是否因为通过路径查找演员而过于谨慎?

Edm*_*984 11

在我的拙见中,你有三个策略,我从更接近你的问题列出(但对我来说最糟糕的模式,我很抱歉)

策略1:你创建演员A和演员B,将actorRef A传递给演员B的构造函数.你的乒乓子将从演员B开始向演员A发送消息,而演员A可以简单地使用发件人参考进行回复.(或者相反)


策略2:在应用程序中创建一个负责命名的图层:它在创建actor时以及查询时分配名称.这将问题集中在一个点上.


策略3:你想知道演奏乒乓球的两个兄弟演员是不是取代了一个更好的,更模块化的演员等级,基本上每个演员只与他的父母和他的孩子交流,并且不了解他的兄弟姐妹.

  • 策略3确实听起来最明智.我有点担心父母最终会做很多布线,但我想这没关系,因为父母的工作是协调孩子(此外,转发消息根本不是很多工作). (3认同)