Feign和RestTemplate服务请求重试方案

本文介绍了Feign和RestTemplate的服务请求重试方案。对于Feign,推荐使用局部配置的重试机制以避免全局影响。而对于RestTemplate,通过启用@EnableRetry注解并设置重试参数,实现重试功能。注意,重试机制只对直接通过代理对象调用的方法生效,并且需要避免特定的陷阱,如接口方法的声明和访问权限限制。
摘要由CSDN通过智能技术生成

一、针对Feign重试

Feign自带Retry,默认是关闭状态。

首先定义FeignRetryConfig类

public class FeignRetryConfig {

    /**
     * 自定义重试机制
     *
     * @return
     */
    @Bean
    public Retryer feignRetry() {
        // 参数分别代表:初始间隔时间为多少ms、重试最大间隔时间为多少ms、最大重试次数  注:下次间隔时间1.5倍递增,下一次间隔时间计算公式:period * Math.pow(1.5, attempt - 1)
        return new Retryer.Default(100L, TimeUnit.SECONDS.toMillis(1L), 5);
    }
}

实现Feign重试机制有两种方式:

1.全局方案

在自定义类FeignRetryConfig上加注解@Configuration

2.局部方案

@FeignClient注解增加 configuration = FeignRetryConfig.class

@FeignClient(name ="",url = "",configuration = FeignRetryConfig.class

建议选用局部方案,因为全局方案如果配置不当,会因为幂等请求带来数据问题。所以建议尽可能是需要做重试的地方单独控制。

二、针对RestTemplate重试

1.引入JAR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于在Spring应用程序中进行HTTP调用的选项,FeignRestTemplate都是常见的选择。这两个库都可以用来实现客户端调用其他服务的功能,但它们有一些区别。 Feign是一个声明式的HTTP客户端,使用注解来定义和配置请求。它集成了Ribbon和Hystrix,可以与Eureka等服务注册中心和负载均衡器无缝配合使用。Feign简化了HTTP调用的配置和使用,使得编写客户端代码更加简洁和易读。 RestTemplate是Spring框架中的一个同步HTTP客户端,提供了丰富的API来进行HTTP请求和处理响应。它可以与其他Spring功能集成,如Spring MVC和Spring Boot。RestTemplate相对于Feign更加底层,更灵活,可以手动配置各种参数和拦截器。 选择使用哪个库取决于你的具体需求。如果你希望更简洁、更易于使用的API,并且与Spring Cloud的其他组件无缝集成,那么Feign是一个不错的选择。如果你需要更多的灵活性和自定义配置,并且不依赖于Spring Cloud的其他组件,那么RestTemplate可能更适合你。 另外,还要考虑到项目的现状和未来发展方向。如果你正在使用Spring Cloud或者计划将其引入到项目中,那么Feign可能更加符合整体架构。但如果你的项目已经使用了RestTemplate,并且没有特别需要引入Feign的理由,那么可以继续沿用RestTemplate。 总之,FeignRestTemplate都是可行的选择,具体取决于你的需求、技术栈和项目背景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值