HttpRequestSchedule
A plugin that enables the client to retry failed requests according to arrow.resilience.Schedule. The default retry policy is 3 retries with exponential jitter'ed delay.
Typical usages which shows the default configuration:
// use predefined retry policies
install(HttpRequestSchedule) {
fun <A> delay() = Schedule.exponential<A>(2.seconds).jittered()
repeat(delay<HttpResponse>.doWhile { request, duration -> request.status.value in 500..599 })
retry(delay<Throwable>().and(Schedule.recurs(3)))
}
// use custom policies
install(HttpRequestSchedule) {
fun <A> delay() = Schedule.spaced<A>(3.seconds)
retry(delay<Throwable>().doWhile { exception, _ -> exception is NetworkError })
repeat(delay<HttpRequest>().doWhile { request, _ -> !response.status.isSuccess() })
modifyRequest { it.headers.append("X_RETRY_COUNT", retryCount.toString()) }
}
Content copied to clipboard