Feign作为HTTP客户端调用远程服务

news2024/11/19 10:33:05

前言

在分布式微服务的机构体系下,我们日常开发调用内部微服务的方式通常是Feign调用,grpc、dubbo,大部分的公司后端架构基本是以Spring Cloud 体系下的,所以基本会用到Feign,Feign是 Netflix开发的声明式、模板化的HTTP客户端,具体对Feign的源码分析之前也有写过,Feign远程调用原理分析 - 掘金想了解的小伙伴具体可以参考这篇文章,本文主要介绍Feign作为客户端去调其他微服务的使用,主要是结合我日常开发的场景来做具体分析。

Feign调用远程服务

先说,我目前所在公司微服务调用的情况,也是通过Feign通信,我们知道调Feign接口,需要把被调用服务的jar包引入调用方服务的pom文件中,通过jar包中暴露的api接口进行远程调用,当然也需要在配置中心加入对应的FeignClient配置。

被调用方Feign接口暴露

Feign客户端注册

调用方pom文件引入jar

[image:0CBD7317-820B-47C0-BCE9-EF41D8CEDE8D-24040-0000416206F49413/C8CDE418-12CC-4B7B-B381-4E58CB59754F.png]

注册中心FeignClient配置

以上配置完成就可以通过实现类里面注入feign接口,调用远程服务的接口了。

Feign通过http的方式远程调用

正常情况下,服务与服务之前可以通过FeignClient进行调用,但是我在开发的过程中遇到个情况,公司项目我是A服务,我需要去调B服务,正常是我将B服务的jar包引入我的项目里,然后通过B服务暴露的Feign接口进行调用,但是出现了一个问题,B服务又引用了common包的一些依赖,而A服务的有一些组件像Mybatis PaginationInterceptor分页拦截器、FeignConfig等一些配置,连类名都与common包的有冲突,所以引入后,项目启动就会报错。

所以就不能通过引用jar的方式调用服务,jar包依赖的问题不能在短时间解决,那么只能通过另外一种调用方式了,通过在A服务写FeignClient,通过URL的方式指向B服务。

A服务Feign定义

这里我通过URL,读取配置中心B服务的域名,直接通过http的方式请求B服务,当然B服务也需要通过controller提供接口名

Controller:

Service:

Serviceimpl:

这样就可以通过http的请求调用远程服务,当然也可以通过httpClient的方式去调远程服务,当然这需要写http配置类,由于都是内部服务所以就没有去用这种方式调用。

总结

Feign的调用确实很多方便简洁,可以省去很多代码, 但是项目之前jar包依赖的问题确实我们日常开发中需要主要的一个地方,不然就向我目前公司项目这样,A服务用的是一个开源的服务,里面基本集成东西有,并没有集成内部common包,所以就会出现这种情况,总结一下好好学技术,所遇到的问题总有很多种解决方式,如果不学的话那么就走到了死胡同了~

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

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

相关文章

基于jeecgboot的flowable流程支持定时边界事件

Flowable事件 事件(event)通常用于为流程生命周期中发生的事情建模。事件总是图形化为圆圈。在BPMN 2.0中,有两种主要的事件分类:*捕获(catching)与抛出(throwing)*事件。 捕获: 当…

【Linux】——权限理解

目录 1.Linux权限的概念 Linux权限管理 1.文件访问者的分类(人的属性) 2.文件类型和访问权限(事物属性) 2.1文件类型 2.2基本权限 2.3文件权限值的表示方法 2.4文件访问权限的相关设置方法 file指令 目录的权限 默认权限…

2000-2019年省级农业绿色全要素生产率原始测算数据和结果数据

2000-2019年省级农业绿色全要素生产率原始测算数据和结果数据 1、时间:2000-2019年 2、范围:包括30个省份 3、方法:使用的方法为SBM-GML指数、SBM-BML指数、SBM-ML指数和全局SBM(静态)。 同时,还提供了…

抗反射蛾眼结构的严格分析与设计

摘要 对于许多光学应用来说需要减少表面反射。控制表面反射的一种非常有效的方法是使用抗反射的纳米或微米结构,启发来源于自然界(蛾眼)。这些具有亚波长范围特征尺寸的结构表现出关于波长和角度依赖性的独特性质。在本文中,介绍了…

SSM校园报修系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 1、学生功能: (1)学生登录:学生通过管理员下发的初始账号和密码,可以登录系统进行申…

git diff 命令6种使用场景

目录 一、背景&目标 二、git三个区了解 三、git diff 6种场景介绍 3.1 工作区和暂存区差异对比 3.2 工作区和版本库之间差异 3.3 暂存区和版本库之间差异对比 3.4 本地版本库之间提交记录对比 3.5 不同分支对比 3.6 不同分支下同一文件对比 四、git diff 中 -x1,y…

非零基础自学Golang 第12章 接口与类型 12.3 接口嵌入

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.3 接口嵌入第12章 接口与类型 12.3 接口嵌入 接口嵌入,也叫接口组合,在其他语言中,这种接口的组合叫作继承;Go语言舍弃了繁杂的继承体系,但继承这…

48页智慧城市大数据可视化平台建设方案

目 录 1. 概述 1.1 需求分析 1.2 采取策略 1.3 方案目标 2. 智慧城市解决方案 2.1 架构说明 2.1.1 整体架构 2.1.2 规划架构 2.1.3 云平台架构 2.2 建设内容 2.2.1 云计算公共支撑平台 2.2.2 智慧规划 2.2.3 智慧管网 2.2.4 智能政务 2.2.5 智慧交通 2.2.6 智慧…

两台笔记本之间快速传输文件,两台电脑之间快速传输大量文件

想用自己的笔记本电脑给同事的电脑传文件,却发现自己和同事都没有带U盘和数据线,怎么办?两台笔记本之间快速传输文件?接下来介绍的方法你可能用得到。 方案一、微信、QQ传输文件 简单的方法就是两台电脑都登陆聊天工具&#xff0…

小学生C++编程基础 课程7(B)

904.等差数列 (课程7) 登录 905.双等差数列 (课程7) 登录 906.打印数列1 (课程7) 登录 907.打印数列2 (课程7) 难度:1 登录 908.对称数列 (课程7) 登录 909.个位数是7 (课程7) 登录 910.打印数列3 (课程7) 登录…

【AI理论学习】n-gram语言模型和神经网络语言模型

n-gram语言模型和神经网络语言模型什么是语言模型语言模型的计算什么是n-gram模型n-gram平滑技术什么是神经网络语言模型(NNLM)?基于前馈神经网络的模型基于循环神经网络的模型语言模型评价指标总结参考资料什么是语言模型 语言模型是自然语…

重磅!张文宏最新防治指南来了!

文 | 闲欢来源:Python 技术「ID: pythonall」最近全国各地最热门的话题恐怕都是跟“羊”有关的了。混乱时期两周之前,在所有人猝不及防的情况下,国家宣布放开疫情防控。从此我们再也不用每天排队做核酸,上班或者出去完也不用处处设…

二维Poisson方程五点差分格式与Python实现

最近没怎么写新文章,主要在学抽象代数下学期还有凸分析好累的一学期哦对,我不是数学系的,我是物理系的。而且博主需要澄清一下,博主没有对象,至少现在还没有。好,兄弟们,好习惯,先上…

SSM鹊巢大连分公司分销商管理系统

开发工具(eclipse/idea/vscode等):idea 数据库(sqlite/mysql/sqlserver等):mysql 功能模块(请用文字描述,至少200字):、主要功能 一、:人员管理:自己派遣到各个地区的员工,也就是分销商&#xf…

Java平衡树之红黑树代码实现过程详解(2)

红黑树 前面介绍了2-3树,可以看到2-3树能保证在插入元素之后,树依然保持平衡状态,它的最坏情况下所有子结点都是2-结点,树的高度为lgN,相比于我们普通的二叉查找树,最坏情况下树的高度为N,确实保证了最坏情…

药学专业转行软件测试,真的可以月薪过万吗?

转行原因 我在大学里学的是药学专业,毕业之后也顺利从事了对口的工作——药物分析。工作很稳定,但是内容很繁琐,薪资也一般,但从我自己内心来说从来没有开心过,因为我不想从事这样枯草并且一眼就可以看到老的人生。 …

常见的DDoS攻击方式和预防方法

DDoS攻击指分布式拒绝服务攻击,即处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。以下是三种常见的DDoS攻击方式: 1.TCP洪水攻击(SYN …

ADI Blackfin DSP处理器-BF533的开发详解65:JPEG解码(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了将 480*272 尺寸的 JPEG 数据解码为 RGB888 数据功能,调用了 JPEG 解码库函数。 JPEG 图像数据以.dat 文件…

FineReport报表工具制作图表-JS实现下拉框选择后复选框默认全选

1. 概述 1.1 预期效果 参数联动查询时,希望下拉框选择后,复选框可以跟着选中全部所有参数值,效果如下图所示: 1.2 实现思路 参数联动查询时,希望下拉框选择后,复选框可以跟着选中全部所有参数值给下拉框添…

六、http模块

HTTP —— 超文本传输协议,用于规范客户端浏览器和服务端以何种格式进行通信和数据交互;HTTP由请求和响应构成的,是一个标准的客服端服务器模型。 HTTP请求响应过程 先简单的来了解以下HTTP的请求响应过程:1.地址解析&#xff1a…