2016-11-04 2 views
1

Я не уверен, какой подход следует соблюдать для контроля Akka.Акка - что после того, как актер был остановлен?

У меня есть акк Акка, который перечисляет файлы с FTP-сервера, когда сообщение запускает его. Если соединение нарушено, актер потерпит неудачу с исключением (например, IOException), которое вызовет наблюдение. На данный момент, я вижу два варианта:

  • Я постоянно возобновляя/не перезапуск актера, пока сервер не возвращается вверх, может быть, с экспоненциальным снижением мощностью
  • я установил параметры (такие как maxNrOfRetries = х) таким образом, что супервизор будет сдавать и останавливать актера после xy раз

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

+0

Я не уверен, что понимаю вопрос. Обе политики кажутся действительными в определенных контекстах, это действительно зависит от того, чего вы хотите достичь. Главным моментом решения является то, что ждет ответа? Уместно ли ответить через 10 минут? 10 часов ? Если это клиент-клиент, то сдача кажется правильной, например. – C4stor

ответ

0

Если вам нужно перезапустить актер в конце концов, не зная, когда соединение снова закроется, экспоненциальная отсрочка (с верхним пределом 60 секунд?) Представляется разумной.

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

Смежные вопросы