OpenFeign-快速使用-连接池-使用的最佳方案-日志配置

OpenFeign

我们利用Nacos实现了服务的治理,利用RestTemplate实现了服务的远程调用。但是远程调用的代码太复杂了:

其实远程调用的关键点就在于四个:

  • 请求方式

  • 请求路径

  • 请求参数

  • 返回值类型

所以,OpenFeign就利用SpringMVC的相关注解来声明上述4个参数,然后基于动态代理帮我们生成远程调用的代码,而无需我们手动再编写,非常方便。

接下来,我们就通过一个快速入门的案例来体验一下OpenFeign的便捷吧。

快速入门

我们以cart-service中的查询我的购物车为例。因此下面的操作都是在cart-service中进行。

引入依赖

cart-service服务的pom.xml中引入OpenFeign的依赖和loadBalancer依赖:

  <!--openFeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--负载均衡器--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

启用OpenFeign

接下来,我们在cart-serviceCartApplication启动类上添加注解,启动OpenFeign功能:

编写OpenFeign客户端

cart-service中,定义一个新的接口,编写Feign客户端:

其中代码如下:

@FeignClient("item-service")
public interface ItemClient {@GetMapping("/items")List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}

这里只需要声明接口,无需实现方法。接口中的几个关键信息:

  • @FeignClient("item-service") :声明服务名称

  • @GetMapping :声明请求方式

  • @GetMapping("/items") :声明请求路径

  • @RequestParam("ids") Collection<Long> ids :声明请求参数

  • List<ItemDTO> :返回值类型

有了上述信息,OpenFeign就可以利用动态代理帮我们实现这个方法,并且向http://item-service/items发送一个GET请求,携带ids为请求参数,并自动将返回值处理为List<ItemDTO>

我们只需要直接调用这个方法,即可实现远程调用了。

使用FeignClient

最后,我们在cart-service的实现类中改造代码,直接调用ItemClient的方法:

重要代码:

private final ItemClient itemClient;
List<ItemDTO> items = itemClient.queryItemByIds(itemIds);

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PHP人才机遇桥梁招聘求职全能系统小程序源码

人才机遇桥梁 —— 招聘求职全能系统全解析 &#x1f4bc;&#x1f680; &#x1f309; 搭建人才与机遇的桥梁 在这个竞争激烈的职场环境中&#xff0c;找到一份心仪的工作或招募到合适的人才&#xff0c;往往不是一件容易的事。但幸运的是&#xff0c;我们有了“人才机遇桥梁…

JDK1.8 新的特性

一 Lambda 使用 Lambda表达式应用场景&#xff1a;任何有函数式接口的地方&#xff0c;只有一个抽象方法(Object类中的方法除外)的接口是函数式接口。就像Runnable接口中&#xff0c;只有一个run方法。 1、Runnable //在JDK1.8之前的写法new Thread(new Runnable() {public v…

养老院管理系统(含源码+sql+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 养老院管理系统拥有两种角色&#xff1a;管理员和护工 管理员&#xff1a;用户管理、老人信息管理、事故记录管理、入住费用管理、护工薪资管理、护工请假管理、床位管理、请假管理等 护…

【机器学习基础】Transformer学习

Transformer学习 梯度消失FeedForward层激活函数的主要作用是在网络中加入非线性变换 梯度消失 梯度爆炸 FeedForward层 Transformer结构: Transformer结构主要分为两大部分: 一是Encoder层结构:Encoder 的输入由 Input Embedding 和 Positional Embedding 求和输入Multi…

大模型部署——NVIDIA NIM 和 LangChain 如何彻底改变 AI 集成和性能

DigiOps与人工智能 人工智能已经从一个未来主义的想法变成了改变全球行业的强大力量。人工智能驱动的解决方案正在改变医疗保健、金融、制造和零售等行业的企业运营方式。它们不仅提高了效率和准确性&#xff0c;还增强了决策能力。人工智能的价值不断增长&#xff0c;这从它处…

汽修行业的知识库搭建:赋能在线教育与知识付费

随着汽修行业的蓬勃发展&#xff0c;其业务范围和技术要求日益多元化。为了应对这一趋势&#xff0c;许多汽修公司开始探索线上教育模式&#xff0c;通过开设汽修知识课程&#xff0c;实现知识的有偿分享与传播。这一转变不仅拓宽了企业的盈利渠道&#xff0c;也为广大汽修爱好…

环境变量

见一见环境变量&#xff1a; 查看环境变量的命令 命令行&#xff1a; echo &PATH echo &HOME env ps ajx ps aux ps -f -o pid code.c中获取环境变量 main&#xff08;char* env[]&#xff09; char* getenv&#xff08;env_name&#xff09; 本地变量 shell…

腾讯云新开端口

检查防火墙设置 890 2024-09-30 20:47:18 netstat -tuln | grep 1213891 2024-09-30 20:47:49 ping 110.40.130.231892 2024-09-30 20:48:38 sudo firewall-cmd --zonepublic --add-port1213/tcp --permanent893 2024-09-30 20:48:51 sudo firewall-cmd --reload894 2024-…

[Everything] 文件搜索工具的下载及详细安装使用过程(附有下载文件)

快速搜索文件名及其所在路径 下载链接在文末 下载压缩包后解压 &#xff01;&#xff01;安装路径不要有中文 解压后得到文件 双击exe文件得到 选择简体中文&#xff0c;点击OK 点击“我接受” 更改安装目录&#xff0c;最好不要放在C盘&#xff0c;点击下一步 点击下一步 点…

动态时钟控件:Qt/C++ 项目代码解读

基于Qt的动态时钟控件项目。该项目展示了如何通过Qt的绘图系统绘制一个带有表盘背景、时针、分针、秒针、以及时间日期显示的时钟。同时&#xff0c;这个时钟控件支持背景切换&#xff0c;并且每秒钟刷新一次&#xff0c;实时显示当前时间。 项目结构与功能概述 该时钟控件主…

如何利用 StarRocks 加速 Iceberg 数据湖的查询效率

数据湖作为一种存储各种类型数据的集中式存储系统&#xff0c;以其灵活性、可扩展性和低成本的优势受到越来越多企业的青睐。然而&#xff0c;数据湖虽然降低了数据存储成本&#xff0c;但在数据分析尤其是实时数据分析场景下&#xff0c;其性能仍存在一定瓶颈。 本文将探讨如何…

Python的异步编程

什么是协程&#xff1f; 协程不是计算机系统提供&#xff0c;程序员人为创造。 协程也可以被称为微线程&#xff0c;是一种用户态内的上下文切换技术。简而言之&#xff0c;其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法&#xff1a; greenlet&…

Windows——解除Windows系统中文件名和目录路径的最大长度限制

第一步&#xff1a;打开本地组策略编辑器 按下Win R键打开运行窗口&#xff0c;输入 gpedit.msc 并回车&#xff0c;打开本地组策略编辑器。 第二步&#xff1a;开启 长路径设置 第三步&#xff1a;重启计算机

全新带货思路,用AI美女数字人做情感赛道,27天销量1559单

本期就另外分享一个全新的AI美女数字人带货思路&#xff0c;如果你正好对AI视频带货感兴趣&#xff0c;那么本期内容直接给你抹平“视频号上AI美女数字人玩法信息差”&#xff0c;最主要还是趁这类内容还不卷的时候&#xff0c;赶紧行动起来&#xff01; 更多实操教程和数字人工…

Paper解读:工作场所人机协作的团队形成:促进组织变革的目标编程模型

人工智能&#xff08;AI&#xff09;具有降低运营成本、提高效率和改善客户体验的潜力。 因此&#xff0c;在组织中组建项目团队至关重要&#xff0c;这样他们就会在决策过程中欢迎人工智能。 当前的技术革命要求公司快速变革&#xff0c;并增加了对团队在促进创新采用方面的作…

Chromium 屏蔽“缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。”提示 c++

新编译的Chromium工程默认gn参数如下: 可以利用gn args --list out/debug >1.txt 导出默认参数 google_api_key Current value (from the default) "" From //google_apis/BUILD.gn:43 Set these to bake the specified API keys and OAuth client …

【IT001】基于springboot+vue实现的在线问卷调查网站系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 在当今信息爆炸的时代&#xff0c;数据收集与分析的重要…

经典文献阅读之--Stereo-NEC(全新双目VIO初始化)

0. 简介 双目VI-SLAM初始化方法分为两种类型&#xff1a;联合方法和分离方法。联合方法通过融合视觉观测和IMU积分来同时处理视觉和惯性参数&#xff0c;但有可能在闭合解中忽视陀螺仪偏置&#xff0c;而且计算成本高。分离方法首先独立解决SfM问题&#xff0c;然后根据纯视觉…

Qt --- 常用控件的介绍---Widget属性介绍

一、控件概述 编程&#xff0c;讲究的是站在巨人的肩膀上&#xff0c;而不是从头发明轮子。一个图形化界面上的内容&#xff0c;不需要咱们全都从零区实现&#xff0c;Qt中已经提供了很多内置的控件了&#xff08;按钮&#xff0c;文本框&#xff0c;单选按钮&#xff0c;复选…

CMake教程(八):添加定制命令和生成的文件

本篇继续 CMake 官网教程的第八篇教程&#xff0c;所用材料是 Step8 目录下的源代码。 本篇教程主要讲解如何通过 CMake 生成一个头文件&#xff0c;该头文件当中包含了 1 到 10 的平方根表格&#xff0c;然后在程序的其它部分包含这个生成的头文件。 出于教学的目的&#xf…