如何从 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的一个实例变量。