如何从postStop访问scoped到当前行为的状态

时间:2016-03-01 10:37:07

标签: functional-programming akka actor

我有一个在线游戏,一个代表用户状态的演员。通过递归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());

}

我不想把州作为演员场。什么是解决这个问题的最佳方法?

1 个答案:

答案 0 :(得分:1)

无法访问user功能之外的updatedUser值。

只需让您的用户声明actor的实例变量即可。