Feign技术

说明:Feign和RestTemplate一样,是用于微服务之间通信的,配合注册中心技术Nacos,可以搭建一个完整的SpringCloud环境。本文介绍在Nacos+Feign环境下,Feign的使用。

环境介绍:创建两个服务,订单服务、用户服务,查询订单时,订单服务会发请求给用户服务,查询该订单对应的用户信息,注册中心Nacos已搭建完成。

使用

第一步:添加依赖

首先,在发送请求的服务方(订单服务,向用户服务发送请求),添加openfeign依赖

        <!--openfeign依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

第二步:编写客户端接口

创建一个包feignclients包,里面放对应请求接收方服务的Controller接口,注意请求路径和参数列表:

  • 请求路径:服务端Controller方法路径可能是类上+方法上拼接的,而Feign客户端接口需要的是完整路径;

  • 参数列表:服务端Controller方法对于键值对的参数可以直接根据参数名接收,而Feign客户端接口接收的参数是json格式的,需要加@RequestParam注解

在这里插入图片描述

类上加@FeignClient()注解,注解内填对应的服务名称,可在nacos上复制过来

在这里插入图片描述

第三步:添加注解

在启动类上添加,@EnableFeignClients()注释,注释内填Feign客户端接口的全限定包名

在这里插入图片描述

第四步:使用

在需要使用的类中,装配客户端接口,然后直接调用对应的方法就可以了。
在这里插入图片描述

查询成功,如果请求失败,需要检查发送请求的服务和接收请求的服务是否在同一个命名空间内;

在这里插入图片描述

Feign配置

日志配置

# 开启日志功能
logging:level:com.hzy: debugfeign:client:config:# default全局的配置default: # 日志级别,BASIC就是基本的请求和响应信息loggerLevel: FULL# Feign客户端远程调用业务超时时间readTimeout: 3000# Feign客户端远程调用连接超时时间connectTimeout: 3000

其中,日志级别有以下分类:

  • NONE:不记录任何日志信息,默认值;

  • BASIC:仅记录请求的方法,URL以及响应状态码和执行时间;

  • HEADERS:在BASIC的基础上,额外记录请求和响应的头信息;

  • FULL:记录所有请求和响应的明细,包括头信息、请求体、原数据;

在这里插入图片描述

降级处理方案配置

Feign降级处理方案设置,参考:http://t.csdn.cn/tcezs

feign:client:# 微服务保护的组件 熔断器hystrix:enabled: true

连接池优化配置

Feign默认使用的URLConnection连接,不支持连接池,可以使用HttpClient作为连接池使用;

使用前需要添加HttpClient依赖

        <!--httpClient依赖--><dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId></dependency>
feign:client:httpclient:# 开启feign对HttpClient的支持enabled: true# 最大的连接数max-connections: 200# 每个路径的最大连接数 线程隔离max-connections-per-route: 50

总结

Feign代替了RestTemplate的作用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/22516.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Loki+promtail+Grafana监控docker容器日志

目标&#xff1a;监控docker容器的日志&#xff0c;适用于生产环境 效果&#xff1a; 需要的工具&#xff1a;Loki&#xff0c;promtail&#xff0c;Grafana 通过安装promtail容器收集日志&#xff0c;并把日志发送给loki存储处理&#xff0c;由Grafana展示日志。 参考官网的…

解决IDEA项目external libraries依赖包消失的问题

有时候电脑重启后&#xff0c;再打开IDEA上的项目时会出现external libraries目录下的依赖包都消失了的情况&#xff0c;只剩下了一个JDK的包 网上说可以通过刷新IDEA的缓存解决&#xff0c;但我试了没有效果&#xff0c;最后使用如下办法解决&#xff1a; 1.删除项目目录下的…

Web入门-SpringBoot

SpringBootweb快速入门 需求&#xff1a;使用Spring Boot开发一个web项目&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串”Hello World~“开发步骤 创建SpringBoot工程&#xff0c;并勾选web开发的相关依赖 根据自己idea的版本的不同创建模块即可 &#x…

最火爆的大模型框架LangChain七大核心及案例剖析上(一)

最火爆的大模型框架LangChain七大核心及案例剖析上 10.1 Models解析及案例剖析 本节正式进入当前开源界最火爆的大模型开发框架LangChain的部分,会讲解整个LangChain解决的问题及它的工作机制,通过一个“LangChain GPT内容创建者”(“LangChain GPT Content Creator”)的具体…

冷门研究冒险家同济陈涵晟:让科技帮助未来人类拓展艺术边界

原来他们是这样走过来的&#xff01; 【AI红人荟】——这里是TechBeat人工智能社区为优秀的AI工作者开设的人物专访栏目。从膜拜“红人”到成为“红人”&#xff0c;TechBeat与你一起&#xff0c;在AI进阶之路上&#xff0c;升级打怪、完美通关~ 本篇人物&#xff0c;是来自同…

KMP算法和朴素算法对比

1.KMP速求next数组 先记录做题过程 等有时间再填内容吧

【GitHub】强大的终端录制工具-Terminalizer

Terminalizer 是一个GitHub上优秀的开源项目&#xff0c;目前项目点赞数已达&#xff1a;14k&#xff0c;该项目可以轻松记录下你在命令行的操作&#xff0c;并将录制好的内容输出成 gif 图像或直接分享到网上。 项目开源协议&#xff1a;MIT 项目主开发语言&#xff1a;JavaSc…

【Elasticsearch】DSL查询文档

目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.2.1.使用场景 1.2.2.基本语法 1.2.3.示例 1.2.4.总结 1.3.精准查询 1.3.1.term查询 1.3.2.range查询 1.3.3.总结 1.4.地理坐标查询 1.4.1.矩形范围查询 1.4.2.附近查询 1.5.复合查询 1.5.1.相关性算分 …

IDEA使用插件绘制UML类图+PlantUML语法讲解

安装 IDEA安装插件 安装完插件记得重启一下IDEA 安装Graphviz&#xff08;亲测win11可以使用&#xff09; 安装完插件之后&#xff0c;还需要安装Graphviz才可以渲染图形。 Graphviz安装包下载地址 安装过程很简单&#xff0c;直接双击或者管理员身份运行即可&#xff0c;注…

mysql数据库的定时备份脚本(docker环境和非docker环境)

一、非docker安装的MySQL MySQL作为一种常用的数据库管理系统,拥有着众多的优秀特性,如高性能、高可靠性、高可扩展性等。然而,在数据备份上,也需要我们进行一定的处理,这样才能保证数据的安全性。因此,在这里我们将介绍如何定时备份MySQL数据库。 我们可以通过MySQL自…

5G时代的材料新宠——液晶高分子聚合物

液晶高分子聚合物时80年代初期发展起来的一种新型高性能工程塑料&#xff0c;英文名为&#xff1a;Liquid Crystal Polymer 简称为LCP。 聚合方法以熔融缩聚为主&#xff0c;全芳香族LCP多辅以固相缩聚以制得高分子量产品。非全芳香族LCP常采用一步或二步熔融聚合制取产品。近年…

IP-GUARD授权库勾选“不跟踪另存为”的效果

容灾时间过期如何申请延长? 有以下几种方式可以在已经超过容灾时间后,让客户端正常使用加密: 1、直接从控制台设置好容灾时间或者长期离线授权,右键客户端导出策略,然后从客户端c:\windows,调出policyimporttool.exe,导入策略即可。 2、直接在控制台设置好长期离线授权…