我正在学习Akka,并试图弄清楚如何让演员彼此交谈(我们称之为A
和B
)。这不是一个请求/响应场景,A
和B
随时相互发送消息。
目前,我有两个兄弟演员,它们在双向传递消息。它们都直接在ActorSystem
上创建。最初我将A
的ActorRef
传递给了B
的构造函数。但是,我无法将B
的ActorRef
传递给A
的构造函数,因为它尚不存在,即我无法使用此方法实现循环引用。
我一直在阅读关于actorFor
的内容,这将使我可以使用其路径查找演员。但是,我对这种设置感到不舒服,因为如果路径更改,则编译器将无法捕获它。
考虑到每个演员都可以访问其父级,另一个选择是将来自A
和B
的消息传递给父级,然后由父级将消息传回A
和B
。但是,这会将父级与来回传递的消息类型耦合在一起。
人们用什么策略使演员彼此知道?我是否太谨慎地通过路径查找演员?
ActorRef
时使用lazy val
吗?我可以想象这会有助于解决循环依赖问题。当然,假设你使用的是Scala... - agilesteel