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)参数值为;、
- 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,
- 修改配置文件
# 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
- 创建熔断实现类
@Component
@Log4j2
public class BusinessHystrix implements BusinessFeignClient {
@Override
public String getName(String id) {
log.info("getname接口调用失败-------------");
return "etname接口调用失败-----";
}
}
- 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工程,访问接口,如下图: