Как рассчитывается время следующего повтора для долговременных функций при наличии набора с обратным коэффициентом полезного действия?

#azure-durable-functions

#azure-durable-functions

Вопрос:

Если моя функция activity завершается с ошибкой, я хочу, чтобы она была автоматически повторена. Я хочу, чтобы сначала повторить попытку сначала через несколько секунд, а затем повторно. Последняя попытка должна быть примерно через 4 дня. Первоначальные попытки должны выполняться с интервалом в несколько секунд, а затем частота должна уменьшаться, чтобы в конце он выполнял попытки каждые 4 часа или около того. Как должны быть установлены параметры RetryOptions для достижения этой цели? Т.е. Какова формула для вычисления последовательности повторных попыток с учетом следующих параметров:

 firstRetryIntervalInMilliseconds = 3000
maxNumberOfAttempts  = 100
backoffCoefficient  = 2
 

Ответ №1:

CallActivityWithRetry использует экспоненциальный механизм отсрочки для вычисления интервалов повторных попыток. (исходный код) Задержка n-й попытки рассчитывается по этой формуле:

firstRetryIntervalInMilliseconds * backoffCoefficient ^ n

Класс RetryOptions имеет множество настраиваемых свойств, включая MaxRetryInterval и RetryTimeout , которые должны помочь достичь желаемого поведения при повторных попытках.