这是我必须处理的情况 -
我正在使用带有播放框架的websockets,每个websocket连接都有自己的Actor
,如here所述。现在,只要进行了websocket连接,我就需要启动另一个订阅Actor
频道的Redis
,并在向频道发送任何已发布的消息时将该消息传递给其父节点,即{{1} }。所以我需要在Websocket Actor
开始后Redis Subscriber Actor
开始。但演员没有Websocket Actor
方法。我尝试在postStart
的{{1}}方法中创建Redis Subscriber Actor
,但它工作正常,但我不明白preStart
没有Websocket Actor
方法的原因。这不是演员创造儿童演员的常见场景。或者这种处理方法是不正确的?
答案 0 :(得分:9)
正如我的评论中所指出的,我不确定为什么preStart
不足以满足您的需求,它是创建子actor的一个好地方(另一个是构造函数体)。关于preStart
的事情是它真正意味着预处理消息。演员本身已经启动但尚未从邮箱接收消息。在开始处理消息之前,这是确保创建任何其他依赖项的好地方。如果您在演员开始处理消息后执行此操作,则可能会遇到尚未创建依赖项(子级)的竞争条件
为了更清晰,您应该查看演员生命周期图here