Как отключить актеров в определенном порядке с возможностью отправки сообщения до смерти? - PullRequest
0 голосов
/ 07 января 2019

У меня есть иерархия актеров, с WebsocketActor в верхней части. Он обрабатывает подключение к стороннему сервису и имеет n SessionActor актеров, которые обрабатывают сложную логику. Теперь я хочу, чтобы при завершении работы системы каждый SessionActor отправлял свое последнее сообщение субъекту WebsocketActor (например, «ок, прервите мой сеанс»). Но поскольку входящий почтовый ящик остановлен для WebsocketActor, он просто не работает.

Я попробовал shutdownGracefully() метод и знал о шаблоне Жнеца, но не уверен, подойдет ли он мне.

Стек, который я использую: Akka + Netty и javax.websocket.*; для поддержки сторонней службы веб-сокетов

1 Ответ

0 голосов
/ 08 января 2019

В akka нет стандартного механизма, который позволял бы именно то, что вам нужно.

Вы должны самостоятельно реализовать такой механизм «очистки».

Этот механизм должен быть запущен и, что немаловажно, завершен до начала прекращения действия актерской системы.

Хотя реализация такого механизма возможна, вы можете пересмотреть вопрос об использовании akka в целом.

Если вам требуется гарантированная доставка сообщений в вашей системе, akka вам не подходит. Он поставляется с политикой «Максимум один раз», что означает отсутствие встроенной логики для доставки сообщений и подтверждений. Проверьте сообщение-надежность доставки .

...