gpt4 book ai didi

scala - 为什么 akka Actor 没有 postStart 方法?

转载 作者:行者123 更新时间:2023-12-01 08:54:46 27 4
gpt4 key购买 nike

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

最佳答案

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

您应该查看参与者生命周期图 here为了更清楚

关于scala - 为什么 akka Actor 没有 postStart 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com