我有一个主管演员,可以创建几个儿童演员。我还定义了一个执行OneToOne处理的监督策略:
override val supervisorStrategy =
OneForOneStrategy() {
case _ =>
logger.info("doing restart")
Restart
}
我想知道我怎么能在这次重启时引入一个Timeout,这样我想在重启孩子之前说5秒钟?我没有看到任何Akka文档指向我任何可配置的超时。有线索吗?我不想拥有Thread.sleep(...)。这绝对是不合时宜的。还有其他建议吗?
答案 0 :(得分:1)
如何使用以下参数覆盖OneForOneStrategy:
OneForOneStrategy(maxNrOfRetries = 6, withinTimeRange = 1.minute) {
...
...
}
这将确保儿童演员在1分钟内重启仅6次!
答案 1 :(得分:0)
您可以使用配置了最小和最大补偿相等的backoff supervisor。
请注意,有两种不同的退避实例。一个用于onStop
,一个用于onFailure
。在您的情况下,我将使用onFailure
,因为这是配置为处理异常情况的主管。