Akka演员在失败时重试

时间:2016-02-16 09:24:04

标签: scala akka

我有一个Actor,它获取一条名为Init的消息,在收到此消息后,它会尝试创建与外部服务的连接。现在这个连接可能成功或失败,我在演员中知道这些信息:

def receive = {
  case Init => {
    val someConn: Option[Connection] = createConnection(...)
    someConn match {
      case Some(conn) => {
        // do something
      }
      case None => // I want to re-try Init, but after a few seconds delay!
  }
}

如果没有,我想再次向此演员发送一条自我消息,但我不想立即这样做。我想延迟几秒钟,比如说10秒钟。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您可以使用scheduleOnce延迟一次向自己发送消息,请在此处查看我的回答:

https://stackoverflow.com/a/31658345/5142537

context.system.scheduler.scheduleOnce(10 seconds, self, Init)