我正在使用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与 新属性配置?
答案 0 :(得分:4)
除了 发送给该actor的消息之外,你永远不应该用任何 来改变演员的状态。
如果您需要更改子actor的属性,您可以:
此外,发送给actor的消息应该是不可变的(final String param1
)。如果你需要访问一个actor的内部状态,你应该向该actor发送一条请求它的消息,然后让actor回复该请求,并且需要任何(不可变的)状态。