我有一个在线游戏,一个代表用户状态的演员。通过递归become
调用状态更新:
private PartialFunction<Object, BoxedUnit> updatedUser(final User user) {
return ReceiveBuilder.
...
matchEquals("update", s -> {
context().become(updatedUser(new User(...)));
}).build();
}
现在当用户离开游戏(演员停止)时,我需要将其状态保存到数据库中。我认为理想的地方是从postStop
发送消息。但是用户的状态超出了范围。
public void postStop() throws Exception {
//user state out of scope
Database.tell(user, self());
}
我不想把州作为演员场。什么是解决这个问题的最佳方法?
答案 0 :(得分:1)
无法访问user
功能之外的updatedUser
值。
只需让您的用户声明actor的实例变量即可。