如果这是一个重复的问题,请道歉。
我是AKKA的新手并尝试扩展akka-java-spring示例代码以添加另一个actor并拥有一个不可变对象Counter用作要发送给CoutingActor的消息,该消息将打印一条消息并将其转发给PrintMessageActor(新演员)。如何从CoutingActor将消息转发到PrintMessageActor。在这种情况下,如何使用文档中的以下代码段。
target.forward(result, getContext());
如何在第一个演员中获得目标(第二个演员)?
答案 0 :(得分:2)
如果我正确地理解了你的问题,你想知道转发行为者应该知道它应转发的目标吗?
两种可能性:
1)如果目标actor在转发actor变为化身时已经存在,那么你可以通过构造函数或消息简单地传递目标的ActorRef
。有关如何使用自己的参数创建自定义Props实例,请参阅Props文档。
2)如果目标在创建转发器时不存在但其ActorSystem
中的路径已经清除(例如“/ user / PrintMessageActor”),那么您可以传入ActorSelection
。如果给定的ActorSystem中存在此路径中的Actor,则ActorSelection可以解析为ActorRef。优选的是第二个选项,因为如果底层actor死亡,ActorRef将无效。另一方面,ActorSelection将解析为此路径上Actor的新化身。