AKKA: безболезненные уведомления об ошибках актера

Образ жизни красивых людей

  • Компонент BEAUTIFUL использует свой внутренний akka.actor.Actor для выполнения определенных действий .. (например, «дразнить»)

  • Есть и другие компоненты MAN , которые действительно хотели бы «взаимодействовать» с КРАСИВЫМ

  • Когда КРАСИВЫЙ находит достойного ЧЕЛОВЕКА , прежде чем «взаимодействовать» с ним, она соглашается ввести его номер телефона (назовем его ErrorHandler ), вы знаете, просто чтобы позвонить ему на случай, если он ушел утром и забыл свои часы Rolex на ее прикроватном столике

  • КРАСИВАЯ , хотя и требует «больших затрат» (не все ли ..), и каждый раз, когда что-то плохое происходит внутри Внутренний Актер BEAUTIFUL (например, OmgBrokenNailException , UglyPurseThrowable и т. Д.), Она сходит с ума, ей нужно полностью остановиться и c все МУЖЧИНЫ , использующие этот номер телефона (например, errorHandler.getOnItNowHoney (message, throwable) )

Проблема красивых людей

Супервизоры AKKA позволяют регистрировать два типа FaultHandlers => OneForOneStrategy и AllForOneStrategy , где, если основной Актер переопределяет preRestart / postRestart, он получает доступ к фактическому «выбрасываемому», например:

override def preRestart( reason: Throwable ) { // do with throwable... }

Проблема в том, что обе эти стратегии будут пытаться перезапустить Актера (ов), чего я не ищу. Я ищу, чтобы Актер вызвал внешний ErrorHandler с "throwable" и остановился.

Если я не использую эти стратегии, когда исключение генерируется внутри Актера, для Актера вызывается postStop , что неплохо, но не принимает "throwable":

override def postStop() { // no access to "throwable"... }

Помогите MAN получить этот throwable

5
задан Henry VIII 5 January 2012 в 17:03
поделиться