Feign简介
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。
简而言之:
- Feign 采用的是基于接口的注解
- Feign 整合了ribbon,具有负载均衡的能力
- 整合了Hystrix,具有熔断的能力
准备工作
- 启动注册中心EurekaServer
- 启动服务端Eureka-privider
- 将服务端Eureka-privider端口改为9001, 再启动一个实例
启动后, 可以看到服务端有两个实例在运行, 准备工作结束了, 进入主题哦
代码示例
POM.XML
1 | <?xml version="1.0" encoding="UTF-8"?> |
application.yml
- 设置端口为1002
- 设置服务名为Erueka-consume-feign
- 设置注册中心地址为http://localhost:8761/eureka/
1
2
3
4
5
6
7
8
9
10
11
12
13
14server:
port: 1002
spring:
application:
name: Erueka-consume-feign
eureka:
client:
# 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒
registry-fetch-interval-seconds: 5
service-url:
# 注册中心地址
defaultZone: http://localhost:8761/eureka/
启动类
- 使用@EnableFeignClients开启Feign
- 使用@EnableEurekaClient开启Eureka
1
2
3
4
5
6
7
8
9
10
11
12/**
* 使用@EnableFeignClients开启Feign
*/
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
编写调用接口
Feign使用的是接口, 具有可拔插的特性
- 使用@FeignClient注解来设置调用的生产者的服务名
- 设置调用的接口名
1
2
3
4
5
6
7
8
9"spring-cloud-producer") (name =
public interface SchedualServiceHi {
/**
* 调用生产者的hi接口
*/
"/hi") (value =
String hi();
}
消费hi服务
请求服务端的hi接口
1 |
|
测试
访问http://localhost:1002/feign, 返回hi I am clouc-producer, i am from port:9000, 说明调用接口正常
多次访问同样和Ribbon示例一样实现了负载均衡。
结语
起风了,唯有努力生存