如果这是一个重复的问题,请道歉。Akka:从一名演员转发到另一名演员
我是AKKA的新手,并试图扩展akka-java-spring示例代码以添加另一个actor并拥有一个不可变对象Counter用作要发送给CoutingActor的消息,该消息打印消息并将其转发给一个PrintMessageActor(新演员)。如何将消息从CoutingActor转发给PrintMessageActor。在这种情况下,如何使用文档中的以下片段来使用它。
target.forward(result, getContext());
如何获得第一个演员的目标(第二个演员)?
谢谢比约恩。我会尝试使用第二个选项。我也想为CoutingActor和PrintMessageActor创建子actor。在父母角色中如何创建子动作者以及子角色如何处理消息? 我想要做的是 - 传递消息给CoutingActor - 这个actor的孩子打印一条消息,然后消息被传递给PrintMessageActor - 它有孩子,他们打印一条消息。我也想控制父母演员可以拥有的儿童人数。如果您能指出我朝着正确的方向,我将不胜感激。 – Sachin
Hallo Sachin。您可以根据需要创建尽可能多的儿童演员。创建一级演员和小孩演员之间唯一的区别就是为您创作的对象。如果你想创建一个第一级的actor(比如“/ user/MyActor”),那么你直接使用ActorSystem,比如说ActorRef的system.actorOf(...)或者ActorSelection的system.actorSelection(...) 。可以使用ActorContext从Actor中创建子actor。 (context.actorOf/.actorSelection) –
(续)发送所有孩子相同的消息(广播)可以通过两种方式实现。您可以迭代父代actor的“children”属性,向他们发送所有相同的消息 - 或者使用称为Router的特殊类型的中介actor。该路由器有几种不同的实现方式,一种是适合您需求的BroadcastRouter。但在这样一个简单的情况下,我个人更喜欢只是迭代孩子。 –