Akka:将一个演员的消息转发给另一个演员

时间:2013-08-19 15:31:05

标签: akka

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

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

target.forward(result, getContext());

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

1 个答案:

答案 0 :(得分:2)

如果我正确地理解了你的问题,你想知道转发行为者应该知道它应转发的目标吗?

两种可能性:

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

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