(二) SpringCloud实例:Feign

本文介绍Feign框架的基本概念,包括其作为HTTP请求调用轻量级框架的优势,并提供集成步骤及实例代码。同时,还讲解了如何进行性能优化以及如何开启熔断机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

        Feign是一个http请求调用的轻量级框架。他的作用就是进行服务之间的调用。

        它使用不在像RestTemplate那样麻烦,直接在类上使用注解(@FeignClient())就可以实现。

        RestTemplate:       

 String name="";
 name=restTemplate.getForObject(userServer+"user/getUsername",String.class);

        Feign:一次声明,多地调用

@FeignClient(value = "store-server",fallback = ProductFeignClientFallback.class)
public interface ProductFegin {
    @PostMapping("/store/add")
    JsonResult Add(@RequestBody Store store);
}

二、集成步骤

注意:以下步骤是在需要调用远程服务的客户端配置

1、导入依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2、启动类开启Feign功能(打注解)

@EnableFeignClients

3、编写Feign客户端(创建接口类就是把调用对象的controller中需要的接口拿过来)       

@FeignClient(value = "store-server",fallback = ProductFeignClientFallback.class)
public interface ProductFegin {
    @PostMapping("/store/add")
    JsonResult Add(@RequestBody Store store);
}

三、实例代码

1、启动类

@SpringBootApplication
@EnableEurekaClient
//开启Fegin
@EnableFeignClients
public class OrderServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServerApplication.class,args);
    }

}

2、接口类

@FeignClient(value = "user-server",fallback = UserFeginBack.class)
public interface UserFegin {
    //获取用户名
    @GetMapping("/user/getUsername")
    String getUserName();
}

3、调用地方

 /** fegin远程调用 */
    @Autowired
    private UserFegin userFegin;

    @GetMapping("/getOrder")
    public String getOrder(){
        String name = userFegin.getUserName();
        if(null == name && "".equals(name)){
            return "没有获取到用户名";
        }
        return name+"  订单";
    }

四、性能优化

1、fegin底层的客户端实现:

        URLConnection:默认实现、不支持连接池

        ApacheHttpClient、OKHttp:支持连接池

2、优化方式

        使用连接池代替默认的URLConnection

        日志级别最好是Basic或none

3、步骤

        导入依赖

    <!--     feign   httpclient 依赖 带连接池的fegin-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

        配置文件

feign:
  hystrix:
    enabled: true #开启熔断支持,
  client:
    config:
      default: #default全局配置
        loggerLevel: BASIC #日志级别为BASIC
  httpclient:
    enabled: true #开启fegin对httpClient的支持
    max-connections: 200 #最大连接数
    max-connection-per-route: 50 #每个路径最大连接数

五、开启熔断

        目的:当调用的服务挂掉了、出现问题时,fegin返回兜底数据,告诉调用方调用服务失败。

1、步骤

        配置文件开启熔断机制       

feign:
  hystrix:
    enabled: true #开启熔断支持,

       写fegin客户端的熔断实现类,即实现Feign客户端

@Component
public class UserFeginBack implements UserFegin{
    @Override
    public String getUserName() {
        return "出错";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值