Feign Ribbon客户端等待并重试

时间:2018-03-14 01:11:03

标签: netflix-feign spring-cloud-feign netflix-ribbon feign

我正在使用Feign Ribbon客户端与服务进行通信。 我有一个客户端在功能区中配置maxAutoRetries后立即失败。是否存在假装或带状的属性,如“等待和重试”,可以等待配置的时间并重试。

1 个答案:

答案 0 :(得分:0)

您可以为此目的定义Retryer Bean。

@Configuration
public class RetryConfiguration {
    @Bean
    public Retryer retryer() {
        // default retryer will retry 5 times waiting waiting
        // 100 ms per retry with a 1.5* back off multiplier
        return Retryer.Default();
    }
}

如果您的需求与默认需求不同,则可以创建自己的Retryer实施。

定义后,在任何RetryableException次呼叫期间抛出Feign时,将使用此重试配置。您可能还需要注册ErrorDecoder以确保来自您的端点的响应被正确包装:

public class MyErrorDecoder implements ErrorDecoder {
    @Override
    public Exception decode(String methodKey, Response response) {
       // handle the error, wrap and return
       return new RetryableException(exception);
    }
}

@Bean
public ErrorDecoder errorDecoder() {
    return new MyErrorDecoder();
}