为什么 akka actors 没有 postStart 方法?

Why dont akka actors have a postStart method?

这是我必须处理的情况 - 我正在使用带有播放框架的 websockets,每个 websocket 连接都有自己的 Actor,如 here 所述。现在,一旦建立了 websocket 连接,我就需要启动另一个订阅 Redis 频道的 Actor,并在将任何已发布的消息传递给该频道时将该消息传递给其父级,即 Websocket Actor ].所以我需要在 Websocket Actor 启动后启动 Redis Subscriber Actor。但是演员没有 postStart 方法。我尝试在 Websocket ActorpreStart 方法中创建 Redis Subscriber Actor,它工作正常,但我不明白 Actors 没有 postStart 方法的原因。这不是演员创造儿童演员的常见场景吗?还是这种做事方式不对?

如我的评论所述,我不确定为什么 preStart 不能满足您的需求,这是放置子 actor 创建的一个好地方(另一个是构造函数主体)。关于 preStart 的事情是它真的意味着消息前处理。 actor 本身已经启动,但还没有从邮箱接收消息。这是确保在开始处理消息之前创建任何其他依赖项的好地方。如果您在 actor 开始处理消息后执行此操作,您可能会遇到尚未创建依赖项(子项)的竞争条件

您应该查看 actor 生命周期图 here 以更加清晰