我正在学阿卡,我正在试图弄清楚如何让演员互相交谈(我们称他们为A
和B
)。这不是一个请求/响应场景,A
和B
随时都会发送对方的消息。Akka actorFor vs传递ActorRef
目前我有两个兄弟姐妹演员互相向两个方向传递消息。它们都直接在ActorSystem
上创建。我最初将ActorRef
的A
传递给B
的构造函数。但是我不能将ActorRef
的B
传递给构造函数A
,因为它还不存在,也就是说我不能将这个方法用于循环引用。
我一直在阅读有关actorFor
,这将让我看看一个演员使用它的路径。但是,我对此设置不太熟悉,因为如果路径更改,它将不会被编译器捕获。
另一种选择,考虑到每一个演员可以访问到它的父,是从A
和B
传递消息到父,然后让家长将消息传递回落到A
和B
。但是,这将父母与来回传递的消息类型结合在一起。
人们使用哪些策略让演员彼此认识?我是否过于谨慎地在路上寻找演员?
你有没有试过在实例化你的ActorRef时使用'lazy val's?我可以想象这将有助于解决循环依赖。假设你使用斯卡拉当然... – agilesteel 2012-08-05 19:37:53
我刚刚给了一个去,它的工作原理。我不知道你在定义之前引用了懒惰的val - 疯狂的东西!谢谢你的提示。我仍然有兴趣了解人们对于传递ActorRefs vs路径的感觉。 – Geoff 2012-08-05 20:45:33
确保您已阅读http://doc.akka.io/docs/akka/2.0.2/general/addressing.html。 – sourcedelica 2012-08-05 21:11:16