Перезапустить с порога - PullRequest
0 голосов
/ 24 июня 2019

Как создать потоковую сцену, которая «забудет», что она перезапустилась через некоторое время?Я хочу реализовать что-то похожее на RestartFlow с такой политикой, как «если этап был перезапущен 3 раза в течение 5 минут, сбой этапа. Через 15 минут после последнего перезапуска забудьте, что этап перезапущен»

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

Нет стандартного класса с желаемым поведением.Однако, глядя на исходный код RestartFlow.withBackoff, выглядит не очень сложно изменить его так, как вы хотите.Под капотом используется класс RestartWithBackoffFlow , который, в свою очередь, использует класс RestartWithBackoffLogic .Просто добавьте еще один var, чтобы запомнить, когда произошел последний перезапуск (у него уже есть var restartCount = 0 какое-то состояние), и измените функцию maxRestartsReached, чтобы она учитывала некоторое время ожидания сброса.

1 голос
/ 26 июня 2019

То, что вы ищете, это, вероятно, akka.actor.OneForOneStrategy, который позволяет настроить допуск отказов в пределах временного окна.

То есть вам нужно реализовать стратегию надзора.

https://doc.akka.io/docs/akka/current/fault-tolerance.html

...