Akka Actor 在一段时间后重启
Akka Actor Restart After a Time lapse
我有一个 Supervisor actor,它创建了几个儿童 actor。我还定义了一个执行 OneToOne 处理的监督策略:
override val supervisorStrategy =
OneForOneStrategy() {
case _ =>
logger.info("doing restart")
Restart
}
我想知道如何为这次重启引入超时,以便让我们在重启子进程之前等待 5 秒?我没有看到任何 Akka 文档指向我任何可配置的超时。有什么线索吗?我不想 Thread.sleep(...)。这绝对是不等式的。还有其他建议吗?
您可以使用 backoff supervisor 配置的最小和最大退避值彼此相等。
请注意,有两种不同的退避实例。一份用于 onStop
,一份用于 onFailure
。在您的情况下,我会使用 onFailure
,因为这是配置为处理异常情况的主管。
如何使用以下参数覆盖 OneForOneStrategy:
OneForOneStrategy(maxNrOfRetries = 6, withinTimeRange = 1.minute) {
...
...
}
这将确保子 actor 在 1 分钟内仅重启 6 次!
我有一个 Supervisor actor,它创建了几个儿童 actor。我还定义了一个执行 OneToOne 处理的监督策略:
override val supervisorStrategy =
OneForOneStrategy() {
case _ =>
logger.info("doing restart")
Restart
}
我想知道如何为这次重启引入超时,以便让我们在重启子进程之前等待 5 秒?我没有看到任何 Akka 文档指向我任何可配置的超时。有什么线索吗?我不想 Thread.sleep(...)。这绝对是不等式的。还有其他建议吗?
您可以使用 backoff supervisor 配置的最小和最大退避值彼此相等。
请注意,有两种不同的退避实例。一份用于 onStop
,一份用于 onFailure
。在您的情况下,我会使用 onFailure
,因为这是配置为处理异常情况的主管。
如何使用以下参数覆盖 OneForOneStrategy:
OneForOneStrategy(maxNrOfRetries = 6, withinTimeRange = 1.minute) {
...
...
}
这将确保子 actor 在 1 分钟内仅重启 6 次!