Обработка мертвых актеров в Акке Типед - PullRequest
0 голосов
/ 13 мая 2019

У меня есть актеры, которые убивают себя, когда этого требуют бездействие или другие системные ограничения.Актеры, у которых есть ActorRef s, следят за их Terminated(ref), но существует состояние гонки сообщений, предназначенных для актеров, отправляемых до прибытия завершения, и я пытаюсь найти чистый способ справиться с этим.

Я собирался подписаться на DeadLetter и использовать его, чтобы сообщить отправителю, что его ref устарел и что им нужно получить или вызвать новую цель ActorRef.

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

Есть ли лучший образец для решениямертвые нисходящие ссылки и переадресация сообщений на новые нисходящие ссылки, если не считать необходимости какого-либо подтверждения рукопожатия для каждого сообщения?

1 Ответ

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

Рассматривайте мертвые буквы как инструмент отладки, а не то, что можно использовать для реализации гарантий доставки (верно как для Akka, так и для нетипизированных).

Если субъект должен быть уверен в том, что сообщение было доставлено, протокол сообщения должен включать подтверждение. Для повторной отправки актеру также необходимо сохранить буфер для сообщений в полете / еще не подтвержденных, чтобы иметь возможность повторной отправки.

У нас есть некоторые идеи относительно абстракции для различных уровней надежности доставки сообщений. Посмотрим, подходит ли это в Akka 2.6 или позже, хотя, с прототипом: https://github.com/akka/akka/pull/25099

...