You can add a Retryer in the FeignClientConfig
@Configuration
public class FeignClientConfig {
@Bean
public Retryer retryer() {
return new Custom();
}
}
class Custom implements Retryer {
private final int maxAttempts;
private final long backoff;
int attempt;
public Custom() {
this(2000, 3);
}
public Custom(long backoff, int maxAttempts) {
this.backoff = backoff;
this.maxAttempts = maxAttempts;
this.attempt = 1;
}
public void continueOrPropagate(RetryableException e) {
if (attempt++ >= maxAttempts) {
throw e;
}
try {
Thread.sleep(backoff);
} catch (InterruptedException ignored) {
Thread.currentThread().interrupt();
}
}
@Override
public Retryer clone() {
return new Custom(backoff, maxAttempts);
}
}
Updated with sample Retryer example config based on the Retryer.Default.
Tabnine
tabnine.com › home › code library
Code Library - Tabnine
July 25, 2024 - Get the answers and suggestions you need from our AI code assistant. Get started in minutes with a free 90 day trial of Tabnine Pro.
Matez
matez.de › index.php › 2017 › 04 › 12 › exploring-feign-retrying
Exploring Feign – Retrying - matez blog
April 12, 2017 - To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters ... In this case, we can see the Default Retryer working, which ends up doing 5 attempts, but finally the client invocation throws an exception.
GitHub
github.com › OpenFeign › feign › blob › master › core › src › main › java › feign › Retryer.java
feign/core/src/main/java/feign/Retryer.java at master · OpenFeign/feign
* Cloned for each invocation to {@link Client#execute(Request, feign.Request.Options)}. * Implementations may keep state to determine if retry operations should continue or not. */ public interface Retryer extends Cloneable { · /** * if retry is permitted, return (possibly after sleeping). Otherwise, propagate the exception. */ void continueOrPropagate(RetryableException e); · Retryer clone(); · /** * @deprecated use {@link DefaultRetryer} instead.
Author: OpenFeign
Top answer 1 of 8
23
You can add a Retryer in the FeignClientConfig
@Configuration
public class FeignClientConfig {
@Bean
public Retryer retryer() {
return new Custom();
}
}
class Custom implements Retryer {
private final int maxAttempts;
private final long backoff;
int attempt;
public Custom() {
this(2000, 3);
}
public Custom(long backoff, int maxAttempts) {
this.backoff = backoff;
this.maxAttempts = maxAttempts;
this.attempt = 1;
}
public void continueOrPropagate(RetryableException e) {
if (attempt++ >= maxAttempts) {
throw e;
}
try {
Thread.sleep(backoff);
} catch (InterruptedException ignored) {
Thread.currentThread().interrupt();
}
}
@Override
public Retryer clone() {
return new Custom(backoff, maxAttempts);
}
}
Updated with sample Retryer example config based on the Retryer.Default.
2 of 8
5
Just new a contructor Default
@Configuration
public class FeignClientConfig {
@Bean
public Retryer retryer() {
return new Retryer.Default(100, 2000, 3);
}
}
Springcloud
springcloud.io › post › 2022-01 › spring-cloud-openfeign-timeout-and-retry
Spring Cloud OpenFeign timeout and retry - Spring Cloud
January 11, 2022 - maxAttempts: the maximum number of attempts, the number of retries
Medium
medium.com › swlh › how-to-customize-feigns-retry-mechanism-b472202be331
How to Customize Feign’s Retry Mechanism | by Ruhshan Ahmed Abir | The Startup | Medium
July 15, 2024 - Thus retry is not enabled in feign out of the box. Unfortunately this never happens, for a tcp packet there are a millions ways to die in the web. So to enable retry, you have to put the following bean in your client configuration. @Bean public Retryer retryer() { return new Retryer.Default(); }
Baeldung
baeldung.com › home › rest › retrying feign calls
Retrying Feign Calls | Baeldung
February 3, 2022 - When we receive an erroneous response, Feign passes it to an instance of the ErrorDecoder interface that decides what to do with it. Most importantly, the decoder can map an exception to an instance of RetryableException, enabling Retryer to retry the call. The default implementation of ErrorDecoder only creates a RetryableExeception instance when the response contains the “Retry-After” header.
Medium
engineering.getmidas.com › using-spring-retryable-with-feign-client-methods-9f77e509ad55
Using Spring @Retryable with Feign Client Methods | by Güven Seçkin | Midas Engineering
November 9, 2021 - PS: To enable retry for spring, you should use @EnableRetry annotation into application class ... As you can see above, at line 32 of FeignRetryAspect, we are logging the service calls made by this aspect so we can monitor them later. In that log, we have method name, max attempt count, delay, and most importantly, retry count.
GitConnected
levelup.gitconnected.com › feign-client-retry-and-timeout-configurations-214eaf14a4d1
Feign Client Retry and Timeout configurations | by Ivan Polovyi | Level Up Coding
April 4, 2025 - The Feign client has two configurations that can handle erroneous responses by retrying and giving up on requests that take too long. We…
Javadoc.io
javadoc.io › doc › io.github.openfeign › feign-core › 11.0 › feign › Retryer.Default.html
Retryer.Default - feign-core 11.0 javadoc
Latest version of io.github.openfeign:feign-core · https://javadoc.io/doc/io.github.openfeign/feign-core · Current version 11.0 · https://javadoc.io/doc/io.github.openfeign/feign-core/11.0 · package-list path (used for javadoc generation -link option) https://javadoc.io/doc/io.github.openfeign/feign-core/11.0/package-list ·
SeedStack
seedstack.org › addons › feign
Feign
The following retry parameters can be set : * period : The initial time period, in milliseconds, between two requests attemps. Feign will increase this period by half ( multiply by 1.5 ) until it reaches the maximum allowed period. * maxPeriod : Maximum allowed period, in milliseconds, between two attempts. Feign won’t increase a retry period more than this parameter.
Spring Cloud
cloud.spring.io › spring-cloud-netflix › multi › multi_retrying-failed-requests.html
10. Retrying Failed Requests
To do so when using Sping Cloud Netflix, you need to include Spring Retry on your application’s classpath. When Spring Retry is present, load-balanced RestTemplates, Feign, and Zuul automatically retry any failed requests (assuming your configuration allows doing so). By default, no backoff ...
Ddcode
ddcode.net › 2019 › 06 › 23 › retry-and-timeout-settings-for-feigninclient
Ddcode
June 23, 2019 - We cannot provide a description for this page right now