16

我正在学习 Akka,并且试图弄清楚如何让演员互相交谈(让我们称他们为Aand B)。这不是请求/响应场景,A并且B随时都在互相发送消息。

目前我有两个兄弟演员,他们在两个方向上互相传递消息。它们都是直接在ActorSystem. 我最初将ActorRefof传递AB. 但是我不能将 of 传递给ActorRefofB的构造函数,A因为它还不存在,即我不能将此方法用于循环引用。

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

另一种选择是,考虑到每个actor都可以访问它的父级,将消息从父级传递到父级,A然后B让父级将消息传递回Aand B。但这会将父级与来回传递的消息类型结合起来。

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

4

1 回答 1

11

在我看来,你有三种策略,我从更接近你的问题开始列出(但对我来说也是最糟糕的模式,我很抱歉)

策略1:您创建actor A 和actor B,将actorRef A 传递给actor B 的构造函数。您的ping-pong 将从actor B 向actor A 发送消息开始,actor A 可以简单地使用sender 引用进行回复。(或相反)


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


策略 3:你想知道打乒乓球的两个兄弟姐妹演员是否没有取代更好、更模块化的演员层次结构,在这种层次结构中,基本上每个演员只与他的父母和他的孩子交流,而不知道他的兄弟姐妹。

于 2012-08-06T07:08:02.840 回答