1

抱歉,如果这是一个重复的问题。

我是 AKKA 的新手,并试图扩展 akka-java-spring 示例代码以添加另一个参与者,并使用不可变对象 Counter 作为消息发送到 CoutingActor,后者打印一条消息并将其转发到 PrintMessageActor(新演员)。如何将消息从 CoutingActor 转发到 PrintMessageActor。在这种情况下,如何使用文档中的以下代码段。

target.forward(result, getContext());

如何在第一个演员中获得目标(第二个演员)?

4

1 回答 1

2

如果我正确理解了您的问题,您想知道转发参与者从哪里知道它应该转发到的目标?

两种可能:

1) 如果目标actor在转发actor实现时已经存在,那么您可以简单地通过ActorRef构造函数或在消息中将其传递给目标。有关如何使用自己的参数创建自定义 Props 实例的信息,请参阅Props文档。

2) 如果目标在创建转发器时不存在,但其路径ActorSystem已经明确(例如“/user/PrintMessageActor”),那么您可以传入一个ActorSelection. 如果此路径中的 Actor 存在于给定的 ActorSystem 中,则 ActorSelection 可以解析为 ActorRef。最好是第二个选项,因为如果底层 Actor 死亡,ActorRef 将无效。另一方面,ActorSelection 将解析到此路径上可能的 Actor 新化身。

于 2013-08-19T20:28:33.330 回答