gpt4 book ai didi

scala - Akka OneForOneStrategy 不起作用

转载 作者:行者123 更新时间:2023-12-01 16:13:53 24 4
gpt4 key购买 nike

我有以下代码:

class A extends Actor with ActorLogging {
override val supervisorStrategy = OneForOneStrategy(maxNrOfRetries = 2) {
case _ => log.info("An actor has been killed"); Restart
}

val b = context.system.actorOf(Props[B], "b")

def receive = {
case _ => context.system.scheduler.schedule(5 seconds, 5 seconds, b, true)
}
}

class B extends Actor with ActorLogging {
def receive = { case true => self ! Kill }
}

self 之后! Kill 在 actor A 的实例中,我没有看到消息“An actor 已被杀死”,并且对 actor A 的后续调用会生成“死信”消息,因此没有重新启动。为什么 OneForOneStrategy 没有被调用?

奇怪的是,我可以删除整个 OneForOneStrategy 覆盖,而程序行为没有任何变化。

最佳答案

val b = context.system.actorOf(Props[B], "b") 应更改为 val b = context.actorOf(Props[B], "b") 使新 Actor 成为子 Actor ,而不是顶级 Actor 。

关于scala - Akka OneForOneStrategy 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691189/

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