如何更新主管的儿童演员的属性?

时间:2014-04-04 15:34:20

标签: scala akka

我正在使用akka来创建主管:

mySupervisor = actorSys.actorOf(Props.create(MyActor.class, MyProperties()));

class MyProperties(){

    String param1;
    String param2;

    //param1 & param2 are set in a configuration file
}

由于从ActorSystem创建一个主管是昂贵的,我只是这样做了一次。我正在使用类MyProperties 访问actor中所需的各种参数。我不想添加逻辑来设置演员本身的属性,所以演员 尽可能少地完成工作,通常这些人员不会改变。但是,当属性确实改变时,我如何更新 主管的儿童演员?我不认为我可以改变mySupervisor的状态(因为不可变)所以这是否意味着我需要创建一个新的supervisor与 新属性配置?

1 个答案:

答案 0 :(得分:4)

除了 发送给该actor的消息之外,你永远不应该用任何 来改变演员的状态。

如果您需要更改子actor的属性,您可以:

  • 杀死演员并使用新属性创建替换
  • 使用新属性向玩家发送消息

此外,发送给actor的消息应该是不可变的(final String param1)。如果你需要访问一个actor的内部状态,你应该向该actor发送一条请求它的消息,然后让actor回复该请求,并且需要任何(不可变的)状态。