Akka actorFor vs传递ActorRef

时间:2012-08-05 19:25:02

标签: scala akka

我正在学习阿卡,我正试图弄清楚如何让演员互相交谈(让我们称他们为AB)。这不是请求/响应方案,AB随时都会向对方发送消息。

目前我有两个兄弟演员在两个方向互相传递信息。它们都是直接在ActorSystem上创建的。我最初将ActorRef A传递给了B的构造函数。但我无法将ActorRef B传递给A的构造函数,因为它还不存在,即我不能将此方法用于循环引用。

我一直在阅读有关actorFor的内容,这样我就可以使用它的路径查找演员了。但是,我对这种设置不满意,因为如果路径发生变化,编译器就不会捕获它。

考虑到每个角色都有权访问它的父级,另一个选择是将消息从AB传递给父级,然后让父级将消息传递回{{1} }和A。但这会将父母与来回传递的消息类型联系起来。

人们使用什么策略让演员互相认识?我是否对通过路径查找演员过于谨慎?

1 个答案:

答案 0 :(得分:11)

在我的拙见中,你有三种策略,我从你的问题越接近列出(但对我来说最糟糕的模式,对不起)

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


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


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