SpringCloud学习 系列八、OpenFeign

系列导航

SpringCloud学习 系列一、 前言-为什么要学习微服务

SpringCloud学习 系列二、 简介

SpringCloud学习 系列三、 创建一个没有使用springCloud的服务提供者和消费者

SpringCloud学习 系列四、微服务中心 Eureka介绍及创建一个Eureka中心服务

SpringCloud学习 系列五、创建生产者和消费者验证微服务中心 Eureka的作用

SpringCloud学习 系列六、服务平滑离线

SpringCloud学习 系列七、EurekaServer集群创建

SpringCloud学习 系列八、OpenFeign

SpringCloud学习 系列九、Ribbon

SpringCloud学习 系列十、服务熔断与降级(1-简介)

SpringCloud学习 系列十、服务熔断与降级(2-方法级别服务降级)

SpringCloud学习 系列十、服务熔断与降级(3-类级别的服务降级)

SpringCloud学习 系列十、服务熔断与降级(4-Dashboard监控仪表盘)

1、官网介绍

 

声明式 REST 客户端:Feign 通过使用 JAX-RS(Java Api eXtensions for RESTful WebServices,简单来说,就是一种使用注解来实现 RESTful 的技术)或 SpringMVC 注解的装饰方式,生成接口的动态实现。

2、通俗理解

Feign含义:假装,伪装。

OpenFeign可以将提供者提供的Restful服务伪装为接口进行消费,消费者只需使用“feign接口 + 注解”的方式即可直接调用提供者提供的 Restful 服务,而无需再使用 RestTemplate。

注意:

Feign 接口是由消费者调用,与提供者没有任何关系。

Feign 仅是一个伪客户端,其不会对请求做任何处理。

Feign 是通过注解的方式实现 RESTful 请求的。

3、创建OpenFeign的工程

为了留存之前的代码,将02-provider-8081复制一份变为03-provider-8081,为了演示方便将注册到集群的功能改回注册到单机eureka

(1)复制 02-consumer-8080命名为 03-consumer-feign-8080。

(2)添加依赖

 

(3)修改启动类

 

(4)定义Feign接口

 

 

 

 

这里要注意:上面selectList方法本来用@GetMapping的,但是如果要传递json参数就必须要改成@PostMapping否则会报错:如下

BUG:feign.FeignException$MethodNotAllowed: status 405 reading

<1>因为要用post方法所以03-provider-8081的Controller也要该成相应的Post方法。
<2>这里还要特别强调一下@RequestBody的用法,provider中参数的接收,路径上的参数可以不用@RequestBody,但是非路径上的参数必须用@RequestBody才可以接收到参数,否则参数无法接收。

 

(5)删除如下类

 

 

 

 

(6)修改处理器

 

 

 

 

(7)修改启动类

 

 

 

 

(8)启动程序验证

1、启动00-eurekaserver-8000、03-provider-8081、03-consumer-feign-8080

 

 

 

 

2、consumer/block/get/1  测试单条查询

这是测试路径中的参数

 

 

 

 

3、consumer/block/list 测试

不带参数测试

 

 

 

 

带参数测试

 

 

 

 

4、consumer/block/add  测试新增

 

5、consumer/block/update/7 测试修改

 

6、consumer/block/delete/7 测试删除

 

全部验证完毕,feign的功能都好用了。

 

(9)超时策略

最后补充一下超时的策略,feign客户端需要调用provider的提供的服务,feign客户端等待多久没有收到响应可以认为是请求失败。

直接上实例

1、修改03-feignConsumer-8080的配置文件

2、修改服务实现类,增加一段休眠6秒的程序

 

 

3、重启03-provider-8081、03-consumer-feign-8080

4、访问consumer/block/get/1验证超时

 

 

posted @ 2022-12-15 16:04  万笑佛  阅读(67)  评论(0编辑  收藏  举报