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