检查远程Akka actor是否可用

Pen*_*gin 9 scala akka

如何检查我通过actorFor获得actorRef的远程actor是否还活着?任何对文档的引用都将不胜感激.我正在使用Scala的Akka.

我已经看到了对主管和死亡计时器的参考,但我并不觉得我的用例需要这么重的机器.我只想让我的客户端检查主服务器是否使用已知路径,以及是否发送消息介绍自己.如果主机未启动,则应等待一段时间再重试.

更新2: 建议我只是使用乒乓询问测试来查看它是否还活着.我明白这就像是

implicit val timeout = Timeout(5 seconds)
val future = actor ? AreYouAlive
try{
    Await.result(future, timeout.duration)
}catch{
    case e:AskTimeoutException => println("It's not there: "+e)
}
Run Code Online (Sandbox Code Playgroud)

我想我已经对日志中存在例外情况感到困惑,现在它们仍然存在.例如

  • 错误:java.net.ConnectException:连接被拒绝
  • 错误:java.nio.channels.ClosedChannelException:null

也许这就是它的工作方式,我必须接受日志中的错误/警告,而不是试图防止它们?

Vik*_*ang 7

只需发送消息即可.无论如何,在您发送消息后,它的机器可能会在纳秒内无法访问.如果你没有得到任何答复,很可能已经死了.在文档中有一个很大的章节:http://doc.akka.io/docs/akka/2.0.1/general/message-send-semantics.html