Как использовать PreRestart в Akka Typed? - PullRequest
0 голосов
/ 19 мая 2019

Я только что столкнулся с проблемой в моей работе, которая соответствует https://github.com/akka/akka/issues/26899.

Как мне написать типизированное поведение, где я могу получить

case (reason: Throwable, message: Option[Any]) =>

для перезапуска (аналогичнонетипизированные актеры) внутри моего Behaviors.receive для обработки исключений для конкретных сообщений?

Так что пока я вижу только получение PreRestart:

Behaviors.receiveMessage {
  msg =>
    //...
}.receiveSignal {
  case (actor, signal) =>
    println(signal)
    //...
}

1 Ответ

0 голосов
/ 22 мая 2019

PreRestart не обработчик исключений, а возможность выполнить очистку. Чтобы подчеркнуть это, сигнал был оставлен максимально простым в Akka Typed.

Можно сказать, что это также является следствием парадигмы «Let It Crash»: если ожидается исключение, вы можете просто обработать его там, где оно происходит. Однако, если исключение является неожиданным, то это именно тот случай, когда должен действовать надзор за актером и автоматический перезапуск: ничего не предполагайте, а начинайте с чистого листа.

Типизированная стратегия контроля ( учебное сообщение ) может быть выбрана по типу исключения. Даже там детали не могут быть рассмотрены по той же причине.

...