正如Feign文档中提到的,默认情况下,将自动重试IOException
s。
我们的项目中还有其他retry
逻辑,我想阻止Feign的。有没有简单的方法可以禁用它?还是应该编写我自己的重试器?
我们正在使用Spring Cloud的开放式伪装库。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
如果要更改默认重试行为,则需要提供自己的Retryer
。 它可以直接应用于Feign.builder,也可以将其注册为Bean。 无论哪种方式,都必须实现feign.Retryer
接口。
从版本 spring-cloud-starter-openfeign 2.2.6
开始,您不需要执行任何操作。Spring 禁用FeignClientsConfiguration
中的重试。所以 Feign 不会对IOException
进行重试。
@Bean
@ConditionalOnMissingBean
public Retryer feignRetryer() {
return Retryer.NEVER_RETRY;
}
顺便说一下,除了在 Feign 级别IOException
之外,不可能对异常进行重试。