如何从 postStop 访问范围为当前行为的状态
How to access state scoped to current behaviour from postStop
我有一个在线游戏,其中的角色代表用户的状态。通过递归 become
调用更新状态:
private PartialFunction<Object, BoxedUnit> updatedUser(final User user) {
return ReceiveBuilder.
...
matchEquals("update", s -> {
context().become(updatedUser(new User(...)));
}).build();
}
现在当用户离开游戏(actor 停止)时,我需要将其状态保存到数据库中。我认为最理想的地方是从 postStop
发送消息。但是用户的状态超出了范围。
public void postStop() throws Exception {
//user state out of scope
Database.tell(user, self());
}
我不想将状态作为 actor 字段。解决这个问题的最佳方法是什么?
无法在 updatedUser
函数之外访问 user
值。
只要让你的用户状态成为actor的一个实例变量。
我有一个在线游戏,其中的角色代表用户的状态。通过递归 become
调用更新状态:
private PartialFunction<Object, BoxedUnit> updatedUser(final User user) {
return ReceiveBuilder.
...
matchEquals("update", s -> {
context().become(updatedUser(new User(...)));
}).build();
}
现在当用户离开游戏(actor 停止)时,我需要将其状态保存到数据库中。我认为最理想的地方是从 postStop
发送消息。但是用户的状态超出了范围。
public void postStop() throws Exception {
//user state out of scope
Database.tell(user, self());
}
我不想将状态作为 actor 字段。解决这个问题的最佳方法是什么?
无法在 updatedUser
函数之外访问 user
值。
只要让你的用户状态成为actor的一个实例变量。