Akka演员在时间流逝后重新开始

时间:2016-05-02 12:26:12

标签: scala akka akka-supervision

我有一个主管演员,可以创建几个儿童演员。我还定义了一个执行OneToOne处理的监督策略:

  override val supervisorStrategy =
    OneForOneStrategy() {
      case _ =>
        logger.info("doing restart")
        Restart
    }

我想知道我怎么能在这次重启时引入一个Timeout,这样我想在重启孩子之前说5秒钟?我没有看到任何Akka文档指向我任何可配置的超时。有线索吗?我不想拥有Thread.sleep(...)。这绝对是不合时宜的。还有其他建议吗?

2 个答案:

答案 0 :(得分:1)

如何使用以下参数覆盖OneForOneStrategy:

OneForOneStrategy(maxNrOfRetries = 6, withinTimeRange = 1.minute) {
  ...
  ...
}

这将确保儿童演员在1分钟内重启仅6次!

答案 1 :(得分:0)

您可以使用配置了最小和最大补偿相等的backoff supervisor

请注意,有两种不同的退避实例。一个用于onStop,一个用于onFailure。在您的情况下,我将使用onFailure,因为这是配置为处理异常情况的主管。