В Akka Actors (с использованием Scala) можно использовать стратегии наблюдения для обработки исключений. Эта стратегия может решить, что делать с субъектом, в зависимости от типа исключения. Насколько я понимаю, есть 4 возможных результата:
- Resume - позволить дочернему актору сохранить свое текущее состояние и продолжить обработку новых сообщений, как будто ничего не произошло.
- Restart - перезапустить дочерний актер, т.е. убить текущего дочернего актера, который потерпел неудачу, и создать новый вместо него.
- Stop - Завершить дочерний актер навсегда.
- Escalate - разрешить супервизору обработать эту ошибку.
В документации четко указано, что при перезапуске актера текущее сообщение будут потеряны, и с этим нужно иметь дело. Однако в нем четко не указано, применимо ли то же самое к резюме. Продолжает ли он обрабатывать эти сообщения (при условии, что какой-то внешний фактор вызвал исключение, которого больше нет), или это продолжается со следующим сообщением в почтовом ящике?