gpt4 book ai didi

java - Akka 中的 poststop 和 terminate 之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:46:48 26 4
gpt4 key购买 nike

在 akka 中,当 actor 停止时调用 poststop 方法。

还可以配置 watch supervisor 以便当一个 actor 被终止时,在 supervisor 中收到一个 Terminated 消息。

使用 postStop 而不是 Terminated 有什么优势吗?我能看到的唯一区别是当 actor 停止时调用 postStop(在 actor 内),当 actor 终止时调用 Terminated(在 supervisor 内)。

当一个 actor 被停止时,它不也被终止了吗?

最佳答案

首先,postStop() 是从 preRestart() 同一个 actor 的默认实现调用的(参见 here ),而 Terminated 消息仅在 actor 真正停止时才发送给父级,而不是在它刚刚重新启动时。因此,在默认设置中,postStop() 的调用次数可能比发送 Terminated 消息的次数多。

但主要思想是需要post*pre* 钩子(Hook)来清理actor 自身的状态,以及Terminated 消息( whole watch system, 事实上)旨在协调多个参与者的行为和状态。它们的目的不同,虽然您可以从 postStop() Hook 发送自定义的类似 Terminated 的消息,但您真的不应该这样做。

关于java - Akka 中的 poststop 和 terminate 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609520/

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