Feign 是一个声明式的 Web Service 客户端,它的目的就是让 Web Service 调用更加简单。它整合了 Ribbon 和 Hystrix,从而让我们不再需要显式地使用这两个组件。Feign 还提供了 HTTP 请求的模板,通过编写简单的接口和插入注解,我们就可以定义好 HTTP 请求的参数、格式、地址等信息。Feign 会完全代理 HTTP 的请求,我们只需要像调用方法一样调用它就可以完成服务请求。
Feign 具有如下特性:
- 可插拔的注解支持,包括 Feign 注解和 JAX-RS 注解
- 支持可插拔的 HTTP 编码器和解码器
- 支持 Hystrix 和它的 Fallback
- 支持 Ribbon 的负载均衡
- 支持 HTTP 请求和响应的压缩
使用Feign消费服务(基于之前Eureka的服务注册中心):
1.创建服务,添加依赖和配置文件
主要依赖:client,web和openfeign
添加配置文件(端口7005,服务名:service-feign):
2.注解开启Feign的功能
主要注解@EnableFeignClients开启Feign的功能。
3.启动并测试
添加一个接口,@FeignClient表示要调用的服务(eureka-producer)
添加controller调用service接口
启动服务并访问(http:localhost/7005/helloFeign?name=feign):
可以看到服务注册中心的服务:
多次刷新浏览器访问,可以看到后台控制台打印记录,轮询访问端口7001和7002的服务,
也达到了远程服务调用和负载均衡的效果(同restTemplate+Ribbon的效果)
源码地址:https://github.com/wxkhz/springcloud