Akka演员在失败时重试

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

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!
  }
}

如果没有,我想再次发送一条带有Init消息的自我消息,但我不想立即这样做 . 我想延迟几秒钟,比如说10秒钟 . 有什么建议?

回答(1)

2 years ago

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

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

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