У меня проблема с управлением надзором.Наблюдение за моделью Akka
Предположим, у меня есть актер A, который создает актера B и отправляет ему сообщение.
val B = context.actorOf(Props[B],"B")
B ! RandomMessage(param1, param2)
B сделайте так, чтобы вычислить или попросить удаленное обслуживание. В принципе это может сбой с Exception.
override val supervisorStrategy = OneForOneStrategy(loggingEnabled = false) {
case exception:NetworkException => {
Restart
// here I don't have access to param1 and param2 to send message again
}
}
Он отлично работает, потому что ребенок актер перезапущен, но что, если я хочу, чтобы повторить это не удалось сообщение. Как я могу это сделать ?
Я могу использовать preRestart, но мне нужно было бы отправить сообщение: Option [Any] в мой тип команды. На данный момент у меня есть только одна команда, но позже я, вероятно, добавлю больше, и может возникнуть проблема. – Axpom
Я предполагаю, что вы уже используете сопоставление образцов в вашем методе 'receive' для обработки сообщений. То же самое было бы достаточно для сообщений от preRestart. Просто убедитесь, что вы используете 'Option # get' вместо самой опции. – 757071
Do * not * use Option.get, есть причина, по которой это опция, она не всегда доступна. –