SpringCloud学习 系列八、OpenFeign
系列导航
SpringCloud学习 系列一、 前言-为什么要学习微服务
SpringCloud学习 系列三、 创建一个没有使用springCloud的服务提供者和消费者
SpringCloud学习 系列四、微服务中心 Eureka介绍及创建一个Eureka中心服务
SpringCloud学习 系列五、创建生产者和消费者验证微服务中心 Eureka的作用
SpringCloud学习 系列七、EurekaServer集群创建
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验证超时

SpringCloud学习 系列八、OpenFeign的更多相关文章
- SpringCloud学习系列之三----- 断路器(Hystrix)和断路器监控(Dashboard)
前言 本篇主要介绍的是SpringCloud中的断路器(Hystrix)和断路器指标看板(Dashboard)的相关使用知识. SpringCloud Hystrix Hystrix 介绍 Netfl ...
- SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理
前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由 ...
- Linux学习系列八:操作网口
一些相对高性能的单片机会带以太网接口,网口在MCU里算是比较复杂的外设了,因为它涉及到网络协议栈,通常情况下网络协议栈会运行在一个RTOS中,所以对普通单片机开发者来说网口使用起来相对难度较大一些.在 ...
- SpringCloud学习系列<一>版本介绍
SpringCloud学习踩坑记<一> SpringCloud版本迭代实在太快,学习起来也是各种坑,博主用的是"当前"的最新版本,借鉴周立老大的Spring Cloud ...
- SpringCloud学习系列-微服务
最近和尚硅谷周阳老师学习了Spring Cloud感觉有必要在这里做下笔记和总结. 软件系统架构演变 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用 ...
- SpringCloud学习系列之六 ----- 路由网关Zuul基础使用教程
前言 在上篇中介绍了SpringCloud Config的完美使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由网关 ...
- SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
前言 在上篇中介绍了SpringCloud Config的使用,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的分布式配置中心( ...
- SpringCloud学习系列之四-----配置中心(Config)使用详解
前言 本篇主要介绍的是SpringCloud中的分布式配置中心(SpringCloud Config)的相关使用教程. SpringCloud Config Config 介绍 Spring Clou ...
- SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解
前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡. SpringCloud Feign Fei ...
- SpringCloud学习系列之一 ----- 搭建一个高可用的注册中心(Eureka)
前言 本篇主要介绍的是SpringCloud相关知识.微服务架构以及搭建一个高可用的服务注册与发现的服务模块(Eureka). SpringCloud介绍 Spring Cloud是在Spring B ...
随机推荐
- ACPM高效C++组件管理让音视频终端SDK性能更好、稳定性更高
本专栏将分享阿里云视频云MediaBox系列技术文章,深度剖析音视频开发利器的技术架构.技术性能.开发能效和最佳实践,一起开启音视频的开发之旅.本文为MediaBox技术架构篇,重点从 ACPM介绍. ...
- tryhackme进攻性渗透测试-Advanced Exploitation 高级利用
Steel Mountain 侦察 Nmap -sC -sV -O $IP -oN basic_scan.nmap Nmap -script=vuln $IP -oN vuln_scan.nmap 总 ...
- [清华集训2017] Hello World!
Hello world! 题目背景 不远的一年前,小 V 还是一名清华集训的选手,坐在机房里为他已如风中残烛的OI 生涯做最后的挣扎.而如今,他已成为了一名光荣的出题人.他感到非常激动,不禁感叹道: ...
- [CF1854E] Game Bundles
题目描述 Rishi is developing games in the 2D metaverse and wants to offer game bundles to his customers. ...
- MyBatisPlus简介
MyBatisPlus特性 国内的一个网站 网站地址简介 | MyBatis-Plus (baomidou.com)
- 寻找市场中的Alpha—WorldQuant的阿尔法设计理念(上)
本文旨在向读者介绍Alpha的相关基本概念,以及寻找和检验Alpha的主要流程和方法.在上篇中我们梳理了 WorldQuant经典读本FindingAlphas的概要以及WebSim的使用,在下篇中我 ...
- Scrapy创建项目、爬虫文件
创建项目 执行命令 scrapy startproject <项目名> 项目结构 创建爬虫文件 方式一:通过命令生成 scrpay genspider <爬虫名(必须唯一)> ...
- 算法2:Hanoi塔
汉诺(Hanoi)塔 一.背景介绍 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了 ...
- 使用dtd定义属性
- parameterType的用法
在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的 ...