Как я могу проверить, жив ли удаленный актор, для которого я получил actRef через ActorFor? Буду признательна за любую ссылку на документацию. Я использую Akka из Scala.
Я видел ссылки на супервайзеров и Deathwatch, но на самом деле не чувствую, что мой вариант использования нуждается в таком тяжелом оборудовании. Я просто хочу, чтобы мой клиент проверял, использует ли мастер известный путь, и если он отправляет сообщение, представляющее себя. Если мастер не работает, он должен немного подождать, а затем повторить попытку.
Обновление 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: null
Возможно, это просто так, и я должен принять ошибки/предупреждения в журналах, а не пытаться защититься от них?
Ping
актору (конечно, он должен его обработать) и некоторое время подождатьPong
? - person Tomasz Nurkiewicz   schedule 22.05.2012tell
/!
вызовут исключение, поскольку обработка сообщения происходит асинхронно. Вместо этого вы должны отправитьPing
и ждатьPong
в течение некоторого времени. В удаленном акторе просто добавьте:case _: Ping => sender ! Pong
, а в локальном:remoteActor ? Ping
- person Tomasz Nurkiewicz   schedule 22.05.2012