如何检查一个远程演员是否已通过actorFor获取actorRef?任何参考文件将不胜感激。我使用Scala的Akka。检查远程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)
}
我想我一直困惑的日志存在,现在仍然存在的例外。例如。
- 错误:java.net.ConnectException:连接被拒绝
- 错误:java.nio.channels.ClosedChannelException:空
也许这就是它是如何工作的,我必须接受错误/在日志中发出警告,而不是试图防止它们发生?
那么简单地向演员发送Ping消息(当然它必须处理它)并等待'Pong'一段时间呢? –
好问题,已添加更新。 – Pengin
不,你不应该期待'tell' /'!'操作抛出一个异常,因为消息的处理是异步发生的。相反,你应该发一个'Ping'和**等待**给'Pong'一段时间。在你的远程演员中只需添加:'case _:Ping =>发件人! Pong'和本地的:'remoteActor? Ping' –