Spring Cloud Feign使用

Spring Cloud Feign使用
1 简单概述
在使用Spring Cloud 开发微服务应用时, 各个服务提供者都是以HTTP接口形式对外提供服务,因此子啊服务消费者调用服务提供者时,底层通过HTTP Client 的方式访问。我们之前访问别的服务请求使用JDK的URLConnection,Apache的http Client,Spring的RestTemplate进行服务之间的访问。 我们现在使用Spring Cloud Feign组件可以使我们服务的客户端更加方便。
2 简单搭建
1)创建一个服务提供方 business 工程。
在这里插入图片描述
定义一个接口
在这里插入图片描述
profile(bootstrap.yml)参数值为;、
在这里插入图片描述

  1. pay工程添加依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

启动类加入扫描注解
在这里插入图片描述
bootstrap.yml 配置文件添加配置信息

# feign配置
feign:
  compression:
    request:
      enabled:  true  #开启请求压缩功能
      mime-types: text/xml;application/xml;application/json #指定压缩请求数据类型
      min-request-size: 2048  #如果传输超过该字节,就对其进行压缩
    response:
      #开启响应压缩功能
      enabled:  true
#  hystrix:
    # 在feign中开启hystrix功能,默认情况下feign不开启hystrix功能
 #   enabled: false

编写 Feign Client

@FeignClient(name = "business")
public interface BusinessFeignClient {

    @RequestMapping(value = "/getName",method = RequestMethod.GET)
    public String getName(@RequestParam("id") String id);

}

分别启动eureka-server,pay,business工程。访问接口
http://localhost:9001/name 如下图所示:
在这里插入图片描述
访问成功!
3 feign加入熔断Hystrix,

  1. 修改配置文件
# feign配置
feign:
  compression:
    request:
      enabled:  true  #开启请求压缩功能
      mime-types: text/xml;application/xml;application/json #指定压缩请求数据类型
      min-request-size: 2048  #如果传输超过该字节,就对其进行压缩
    response:
      #开启响应压缩功能
      enabled:  true
  hystrix:
    # 在feign中开启hystrix功能,默认情况下feign不开启hystrix功能
    enabled: true

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 15000  #熔断时间高于ribbon时间
ribbon:
  ReadTimeout: 10000
  #请求连接的超时时间
  ConnectTimeout: 10000
  1. 创建熔断实现类
@Component
@Log4j2
public class BusinessHystrix implements BusinessFeignClient {
    @Override
    public String getName(String id) {
       log.info("getname接口调用失败-------------");
        return "etname接口调用失败-----";
    }
}
  1. feign调用加入熔断fallback
@FeignClient(name = "business",fallback = BusinessHystrix.class)
public interface BusinessFeignClient {

    @RequestMapping(value = "/getName",method = RequestMethod.GET)
    public String getName(@RequestParam("id") String id);
}

4)测试
关闭business工程,访问接口,如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值