12.Spring-Cloud-Feign初探
在微服务架构中客户端负载均衡和断路器保护,作为基础工具类框架广泛的应用在各个微服务的实现中,不仅包括我们自身的业务服务类,也包括一些基础设施类微服务,那么是否有更高层次的封装来整合这两个基础工具以简化开发。
Feign是Netflix开发的声明式、模板化的HTTP客户端,Netflix Feign整合了Spring Cloud Ribbon与Spring Cloud Hystrix,除了提供这两者强大功能之外,它还提供了一种声明式的web服务端定义方式。
在Spring Cloud中使用Feign非常简单,只需创建一个接口,并在接口上添加一个注解代码就完成了。Feign支持多种注解,如Fegin自带注解或者JAX-RS注解等。
Spring Cloud对Feign进行了增强,使用Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而上Feign的使用更加方便。
注册中心
注册中心之前的博文已经实现,不在过多强调
服务提供者
修改controller
修改entity
pom.xml
服务消费者(Feign版)
启动类
配置
entity
实体类配置和上面服务提供者一样
controller
调用服务接口类
调用降级类
Spring Cloud Fegin在定义服务客户端的时候与Spring Cloud Ribbon有很大的差别,HystrixCommand定义被封装起来了。不能在像Spring Cloud Hystrix那样,通过@HystrixCommand注解的fallback参数那样来定义服务的降级。 Spring Cloud Fegin提供了一种更方便的做法具体如下:
服务降级逻辑的实现只需要为Feign客户端的定义接口编写一个具体的接口实现类
测试
启动注册中心,启动服务提供者,启动服务调用者
输入:http://localhost:9001/feign-consumer
输入:http://localhost:9001/feign-consumer1/zhangsan
输入:http://localhost:9001/feign-consumer2/zhangsan/15094031789
微信公众号