我如何检查使用actorFor获得actorRef的远程actor是否正常?我正在使用Scala中的Akka,希望您能提供相关文档。我看到了有关supervisors和deathwatch的内容,但是觉得我的情况并不需要这些重型机器。我只想让客户端使用已知路径检查主节点是否可用,如果可用则发送一条消息进行介绍。如果主节点不可用,则应该等待一会儿然后重试。
更新2: 建议我使用ping-pong ask测试来查看它是否可用。我理解这类似于
更新2: 建议我使用ping-pong ask测试来查看它是否可用。我理解这类似于
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:空
也许这就是它的工作方式,我必须接受日志中的错误/警告而不是试图防止它们?
tell
/!
操作会抛出异常,因为消息的处理是异步进行的。相反,你应该发送一个Ping
并等待一段时间来接收Pong
。在你的远程actor中只需添加:case _: Ping => sender ! Pong
,而在本地actor中则需要使用remoteActor ? Ping
。 - Tomasz Nurkiewicz