我正在创建一个参与者系统,需要为列表中的每个对象分配一个参与者示例,为此,我在对象和参与者中都有一个名为uri的String属性,并为它们赋予相同的值,以确定哪个参与者分配给哪个对象,我的系统的目的是允许另一个服务直接向分配给所选对象的参与者发送消息
String[]workers;
ArrayList<Actor> listOfActors = new Arraylist<Actors>();
public WorkerService(ActorSystem system) {
for(String workerName:workers){
final ActorRef hello =
system.actorOf(Props.create(Actor.class),workerName);
listOfActors.add(hello);
}
我知道代码有许多流程,即所有演员都有相同的ActorRef名称,如何解决这个问题?我可以通过名称属性单独区分演员吗?我真的被卡住了,任何帮助都将不胜感激:)
1条答案
按热度按时间ffscu2ro1#
既然
Map
符合要求,为什么还要使用List
?在任何情况下,在Akka中,您唯一看到类型
Actor
的时候是在定义演员的类时Actor
表示参与者的行为,而不是其他代码可以使用的参与者(我说的“使用”是指“发送信息给”,因为这基本上是演员唯一擅长的事情),其最终由ActorRef
表示。Akka Typed通过具有Behavior
和ActorRef
来消除这种混淆。然后,如果在工作服务中的某个地方,您需要向具有给定名称的参与者发送消息:
免责声明,我已经很多年没有写过Java了,但是希望这个想法能被接受。