我正在使用Feign Ribbon客户端与服务通信。我有一个客户端在功能区中配置最大自动重试后立即失败。假装或功能区中是否有属性,例如"等待并重试",可以等待配置的时间并重试。
您可以为此目的定义一个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
实现。
定义后,在任何Feign
调用期间引发RetryableException
时,将使用此重试配置。 您可能还需要注册一个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();
}