Каков хороший способ заставить актера повторить попытку в случае неудачи, но с увеличивающимися временными интервалами между повторными попытками? Скажем, я хочу, чтобы актер повторил попытку через 15 секунд, затем через 30 секунд, затем каждую минуту в течение ограниченного числа раз.
Вот что я придумал:
RetryInfo
параметр, который, если присутствует, содержит номер повторите попытку, мы сейчас находимся вScheduleRetryMessage
с retryCount + 1
, затем выдаст исключение RuntimeExceptionnew OneForOneStrategy(-1, Duration.Inf()
, возвращая Resume
в качестве своего Директива. У актера нет состояния, поэтому Resume
должно быть в порядке.ScheduleRetryMessage
акторretryCount < MAX_RETRIES
:использовать планировщик Akka для планирования отправки RetryMessage
после желаемой задержкиЭто хорошее решение или есть ли лучший подход?