SpringCloud Finchley 实战入门(基于springBoot 2.0.3)【七 Fegin 声明式服务调用】
Fegin 介绍
spring cloud fegin ,他是基于Netflix Fegin实现得,整合了spring cloud Ribbon和spring cloud Hystrix,除了整合这两者得功能外,他还提供了了一种声明式得Web服务客户端定义方式。
快速入门
创建一个spring boot项目命名为”eureka-bussniss-service-user-client-fegin”,选择server和fegin的依赖;
application.yml相关配置:
spring: application: name: service-user-client-fegin server: port: 9001 eureka: client: serviceUrl: defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/ feign: hystrix: enabled: true
项目主类EurekaBussnissServiceUserClientFeginApplication,添加@EnableEurekaClient和@EnableFeignClients注解
@SpringBootApplication @EnableEurekaClient @EnableFeignClients public class EurekaBussnissServiceUserClientFeginApplication { public static void main(String[] args) { SpringApplication.run(EurekaBussnissServiceUserClientFeginApplication.class, args); } }
我们以eureka-bussniss-service-user的服务例。在fegin项目中定义一个接口”UserFeignClient”
/** * 标明feign调用的微服务名称 */ //通过@ FeignClient(“服务名”),来指定调用哪个服务。 // 比如在代码中调用了service-hi服务的“/hi”接口,还可以使用url参数指定一个URL // fallback 出现错误回调类 @FeignClient(name = "service-user",fallback = UserFallback.class) public interface UserFeignClient { /** * 对应service-user微服务中的URL * @return */ @GetMapping("/listUsers") String listUsers(); }
接着,创建一个Controller来实现对Fegin客户端的调用,使用@Autowired自动注入上面的“UserFeignClient ”实例。并且通过方法实现对service-user的服务发起调用。
@RestController public class UserFeignApi { /** * 将刚才定义的userFeignClient注入,并当成普通的接口调用即可 */ @Autowired private UserFeignClient userFeignClient; @GetMapping("/listUsersByFeign") public String ListUsers(){ String users = this.userFeignClient.listUsers(); return users; } }
方式测试fegin的负载均衡以及服务容错保护的功能,我们创建了一个UserFallback实现UserFeignClient。实现接口请求错误的反馈
@Component public class UserFallback implements UserFeignClient { @Override public String listUsers() { return "服务调用失败"; } }
包路径截图
到这里就已经基本完成了,依次启动service-user(8802,8803两个端口)、fegin。
访问fegin项目的地址http://localhost:9001/listUsersByFeign
重复请求,会发现接口数据是依次返回8802和8803的数据的。
现在把其中一个service-user服务停掉(8803),一开始当请求负载到8803这个服务实例时,因为当前的服务已经停掉了,所以接口响应显示了我们实现了UserFallback 类的返回。
再过几秒钟后,我们继续请i求会发现,接口已经全部负载到了8802的服务实例了。
所以可以看到fegin已经实现了Ribbon和Hystrix的功能了。
下一篇我们将实现spring cloud config分布式配置中心的组件。
阅读更多- SpringCloud Finchley 实战入门(基于springBoot 2.0.3)【九 zuul 微服务网关配置】
- SpringCloud Finchley 实战入门(基于springBoot 2.0.3)【八 config 微服务配置中心】
- Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务
- Spring Cloud Learning | 第四篇:声明式服务调用(Fegin)
- 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建
- 非spring-boot调用基于spring-cloud + zookeeper微服务 - 基础搭建
- SpringCloud(一):用springboot实现简单服务调用
- SpringCloud从入门到进阶(四)——使用SpringBoot搭建微服务
- spring cloud快速入门教程(五)进程间调用和微服务负载均衡(RestTemplate+Ribbon)
- 微服务实战之春云与刀客(二)—— Spring cloud 实现仿RPC面向接口调用方式
- 干货分享微服务spring-cloud(5.声明式服务调用feign)
- Spring Cloud中声明式服务调用Feign (11)
- Spring Boot 实践3 --基于spring cloud 实现微服务的简单调用
- SpringCLoud实战微服务之——微服务简介以及入门使用
- 【图文经典版】声明式调用服务SpringCloud之Feign实例讲解
- 【Spring Cloud】--声明式服务调用Feign
- 基于Spring Boot、Spring Cloud、Docker的微服务系统架构实践
- SpringCloud之声明式服务调用Spring Cloud Feign实例
- Spring cloud微服务实战——基于OAUTH2.0统一认证授权的微服务基础架构
- spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法