Предположим, у меня есть мастер с n подчиненными, где подчиненные расположены на других компьютерах.
Мастер-актер выглядит так
class MasterActor extends Actor {
val router: ActorRef = // ... initialized router to contact the slaves
override def receive: Receive = {
case work: DoWork => router ! work
}
}
Пока мои рабы выглядят
class SlaveActor extends Actor {
override def receive: Receive = {
case work: DoWork => // Some logic that takes a couple of seconds
}
}
В случае сбоя машины, на которой размещены некоторые ведомые устройства, или если приложение было остановлено во время обработки некоторых work
, я ожидаю резервного механизма, который позволит системе (я полагаю, главному) узнать об этом сбое, а затем перераспределить потеряно work
для других ведомых устройств.
Я понял принцип надзора в Akka, который позволяет мастеру получать уведомления, когда дочерний актор недоступен, но как я могу вернуть конкретный экземпляр work
, который актор должен был перераспределить?
Поскольку я начал использовать Akka совсем недавно, мой подход, возможно, не адаптирован к лучшим практикам, и я должен решить эту ситуацию по-другому?
Спасибо !