为什么akka演员没有postStart方法?

lov*_*esh 3 scala akka playframework

这是一个情况下,我不得不面对-我使用的WebSockets与游戏框架和各WebSocket连接都有自己的Actor描述在这里.现在,只要进行了websocket连接,我就需要启动另一个Actor订阅Redis频道的节目,并且在向频道发送任何已发布的消息时,将该消息传递给其父节点即Websocket Actor.所以我需要在开始Redis Subscriber Actor之后Websocket Actor开始.但演员没有postStart办法.我尝试Redis Subscriber ActorpreStart方法中创建Websocket Actor它并且它工作正常,但我不明白Actors没有postStart方法的原因.这不是演员创造儿童演员的常见场景.或者这种做法不正确吗?

cmb*_*ter 9

正如我的评论中所指出的,我不确定为什么preStart不足以满足您的需求,这是创建子actor的一个好地方(另一个是构造函数体).关键preStart是它确实意味着预处理消息.演员本身已经启动但尚未从邮箱接收消息.在开始处理消息之前,这是确保创建任何其他依赖项的好地方.如果您在actor开始处理消息后执行此操作,则可能会遇到尚未创建依赖项(子)的竞争条件

为了更加清晰,您应该在此处查看actor生命周期图