| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring cloud alibaba--Feign微服务调用组件 -> 正文阅读 |
|
[Java知识库]Spring cloud alibaba--Feign微服务调用组件 |
目录 1.什么是FeignFeign是Netflix开发的声明式、模板化的HTTP客户端,Feign支持多种注解,例如JAX-RS注解。 spring cloud openfeign对feign进行了增强,使其支持spring mvc注解,另外还整合了Ribbon和Nacos,从而使得feign的使用更加方便。 1.1Feign优势Feign可以做到使用http请求远程服务时就像调用本地方法一样的体验,开发者完全感知不到这是远程调用,更感知不到这是http请求。它像dubbo一样,consumer直接调用接口调用provider,而不需要通过常规的Http client构造请求再解析返回数据。它解决了让开发者调用远程接口跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。 2.spring cloud alibaba整合Feign(1)pom.xml中引入依赖
(2)application.properties中配置链接nacos的信息
(3)编写Feign调用接口 使用@FeignClient来定义feign的调用方式,value为调用的服务名,path对应被调用服务处理的controller层,按相同的写法把提供者的方法在此接口中实现,使用spring mvc注解请求的方式定义。
(4)调用类在启动类代码中添加@EnableFeignClients注解
(5)像调用本地一样发起远程调用,使用接口调用 之前使用spring boot 的RestTemplate调用方式: ①先创建RestTemplate
②程序中使用RestTemplate调用
现在使用OpenFeign调用:直接使用刚才创建的接口定义的方法
3.Spring Cloud Feign日志配置当我们遇到Bug,比如接口调用失败,参数没收到等问题,或者想看看调用性能问题,就需要配置Feign的性能日志,以此让Feign把请求信息输出来。 (1)Feign的日志级别有四种 ①NONE【性能最佳,适用于生产】:不记录任何日志(默认) ②BASIC【适用于生产环境追踪问题】:仅记录请求方法,URL,响应状态代码及执行时间 ③HEADERS:记录BASIC的基础上,记录请求和响应的header、 ④FULL【比较适用于开发和测试环境定位问题】:记录请求和响应的header、body和元数据 (2)定义一个配置类,指定日志级别
(3)application中配置日志级别 spring boot默认级别是info,feign需要配置为debug,所以默认级别情况下不输出feign日志,debug模式,日志太多,可以指定某个包下的日志配置成dubug。 ?(4)系统中再创建一个项目ProductNacos(商品管理系统),提供一个带参数@PathVariable 方式的访问服务。为了后面配置整体日志、指定某个日志方式做准备。 (5)使用Feign访问订单OrderNacos和商品ProductNacos项目的配置接口
******当我们有参数时,使用@PathVariable时,需要把具体的参数名带上@PathVariable("id"),否则feign会报错,spring mvc请求时可以不带上具体的参数名。 (6)配置Feign的日志级别为全局方式,所有的服务都使用这个日志级别,在Feign日志配置类中加注解@Configuration ?(7)我们的订单控制层,使用Feign的方式,调用库存Stock和商品Product的方式
(8)访问服务,查看使用@Configuration全局配置日志的方式,控制台的输出情况:两个服务的feign调用日志都输出来了。 (9)feign日志指定某个服务调用时使用配置方式 需要先去除@Configuration配置 ?方式一:在Feign的配置接口中添加configuration指定 只有商品的日志信息打印出来了 方式二:在application.properties配置文件中指定
此时只有stock服务调用有日志 ?4.Feign契约配置Spring cloud在Feign的基础上做了扩展,使用Spring MVC注解的方式来完成Feign的功能。原生的Feign是不支持Spring mvc的,如果想在spring cloud客户端中使用原生的注解方式定义客户端也是可以的,通过配置契约来改变这个配置。 (1)修改契约配置,支持Feign原生的注解
注意:修改Feign的契约后,使用Feign连接的接口不在支持spring mvc的注解,需要使用Feign原生的注解 (2)Feign连接的接口使用原生的注解 RequestMapping需要改成RequestLine;@PathVariable需要改成@Param
(3)可以在application.properties配置文件中配置,局部指定某个服务使用原生feign配置
此时只是product-service这个配置了原生的feign,stock-service还是使用spring mvc的注解 ? ? ?5.Feign超时时间配置通过Options可以设置连接超时时间和读取超时时间,Options的第一个参数是连接的超时时间(ms),模式2s;第二个参数是请求处理的超时时间(ms),默认5s。 (1)全局配置
(2)application.properties配置文件中进行局部配置
6.Open Feign自定义拦截器(1)定义一个拦截器来,实现RequestInterceptor接口
(2)在配置类中使用@Configuration全局配置
(3)可以在application.properties配置文件中配置,局部配置
(4)Feign发送请求前拦截控制台打印数据,修改uri的参数成功 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 4:54:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |