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

用Feign实现第三方的HTTP请求 最近,在使用spring cloud框架时,发现feign也能实现三方请求,而且实现很简单,请求接口的结构很清晰,便果断学习一波。记录一下。本次使用的依赖仅有openfeign。 1. 开门见山,Feign调用的简单实现 maven依赖 <!-- openfeign依赖 --> <dependency> <groupId&... 阅读详情

前言

在分布式微服务的机构体系下,我们日常开发调用内部微服务的方式通常是Feign调用,grpc、dubbo,大部分的公司后端架构基本是以Spring Cloud 体系下的,所以基本会用到Feign,Feign是 Netflix开发的声明式、模板化的HTTP客户端,本文主要介绍Feign作为客户端去调其他微服务的使用,主要是结合我日常开发的场景来做具体分析。

Feign调用远程服务

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

被调用方Feign接口暴露

Feign客户端注册

调用方pom文件引入jar

注册中心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包,所以就会出现这种情况,总结一下好好学技术,所遇到的问题总有很多种解决方式,如果不学的话那么就走到了死胡同了~

SpringCloud Feign 远程调用(史上最详细讲解) SpringCloud Feign 远程调用(史上最详细讲解)的简单使用。 阅读详情

相关推荐

Spring Boot 中使用Feign作为HTTP客户端调用远程HTTP服务

Feign 简介 Spring Cloud的Feign支持的一个中心概念就是命名客户端.Feign客户端使用@FeignClient注册组合成组件,按需调用远程服务器. Spring Cloud使用FeignClientsConfiguration创建一个新的集合作为每个命名客户端的ApplicationContext(应用上下文), 包含feign.Decoder,feign.Encode...

小尘鸟 7042

java架构之feign与http的区别

feign、http,有时候在调用第三方api的时候、使用httpclient,别人的接口不可能提供它的配置,自己项目框架是spring的,使用feign相互配置,都是okhttpclient的方式。Feign是一个接口声明式调用框架,实现了一个抽象层的逻辑,没有真正实现底层http请求,提供了一个client接口用于实现底层http操作,默认提供的实现是基于httpurlconnection,也有基于apachehttpclient的实现,且feign具有分布式负载均衡功能 feign的两种使用方法

星爷的博客 1万+

SpringCloud Alibaba - HTTP 客户端 OpenFeign 、自定义配置、优化、最佳实践

Feign运行自定义配置来覆盖默认配置,可以修改的配置如下类型作用说明修改日志级别包含四种不同的级别:NONEBASICHEADERSFULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制请求失败的重试机制,默认是没有,不过会使用Ribbon的重试我们最常使用的就是修改日志级别,其他的可以暂时不考虑~配置。

CYK_byte的博客 5822

Springboot使用Feign客户端发送HTTP请求,代替​RestTemplate​远程调用

在 Spring Boot 中,可以使用 Feign 来创建 HTTP 客户端,通过简单的注解方式即可实现服务间的远程调用。Feign是一种声明式、模板化的HTTP客户端,在往常的 HTTP 调用中,一直都是使用的官方提供的来进行远程调用,该调用方式将组装代码冗余到正常业务代码中,不够优雅,因此,可以考虑用Feign来替代。

Xmi2599的博客 3887

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

当然,如果你不想使用Feign作为http客户端,也可以使用比如JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client或者Spring的RestTemplate。并且,你一旦使用了Feign作为http客户端,调用远程的http接口就会变得像调用本地方法一样简单。但是远程的http接口并不是我们自己的,我们无法把它注册到Eureka中,所以这里我们就使用 url = "${url.api}" 把要调用的接口的url域名部分直接写死到配置文件中。

wjianwei666的专栏 1789

C++海康SDK逐帧存图工具:工业视觉数据采集实战指南

在工业视觉、安防监控和机器人感知等项目中,图像采集与处理是核心基础。其原理是通过相机等传感器获取原始图像数据,经过解码、格式转换等处理,最终用于算法分析或数据存档。这项技术的核心价值在于为机器视觉、自动化检测和人工智能模型训练提供高质量、可追溯的输入数据。在实际应用中,尤其在需要长时间稳定运行、高分辨率采集或与特定硬件深度集成的场景下,通用软件往往难以满足定制化需求。本文聚焦于利用海康威视官方SDK进行二次开发,构建一个基于C++的高性能逐帧存图工具。该工具采用生产者-消费者模型,通过回调机制高效处理码流,

weixin_34110749的博客 439

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

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。Feign简介Feign是一种声明式

停止更新 15万+

携程登录风控逆向踩坑实录:从滑块到点选验证码,我是如何一步步拿到phantom-token的

本文详细解析了携程登录风控系统的逆向过程,从滑块验证码到点选验证码的破解,再到设备指纹生成和加密协议逆向,最终成功获取phantom-token。文章提供了关键代码示例和实战技巧,帮助开发者理解并绕过复杂的风控机制。

weixin_28049429的博客 970

Spring Cloud Feign作为HTTP客户端调用远程HTTP服务的使用

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。 Feign简介 Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程.

那就这样吧~ 3159

StarWind V2V Converter v9 虚拟磁盘转换工具使用教程 (转)

StarWind V2V Converter v9.0.1.268 是一款免费的虚拟磁盘转换工具,支持不同管理程序间的虚拟机镜像格式转换,包括VMDK、VHD/VHDX、IMG和QCOW2等格式。该工具具有窗口修复模式、零拷贝转换和管理程序切换等特色功能,能够轻松实现物理机到虚拟机的转换,并兼容主流管理程序如Hyper-V、ESXi等。使用教程详细介绍了从本地文件选择到格式转换的完整操作流程,转换过程简单高效且不影响原虚拟磁盘数据。

hsh的专栏 1482

HEVC/VVC中R-Lambda码率控制算法原理

文章目录1. 比特分配1.1 GOP级比特分配1.2 帧级比特分配1.3 LCU级比特分配2. 码率控制2.1 λ的计算和更新2.2 参数QP的确定 VVC中码率控制算法沿用了HEVC中经典的R-λ码率控制模型,R-λ由中科大的李斌博士提出(详情参考JCTVC-K0103)。R-λ模型的基础为视频编码中 R(比特 bpp)和 D(失真 MSE)之间的双曲线模型,即 D(R)=CR−KD(R) = ...

Aidoneus_y 6137

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

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。Feign完全可以单独使用,不需要...

weixin_39959126的博客 485

开坑!双向逆变电源实操系列--第一节PFC

文章摘要 本文介绍了PFC(功率因数校正)的基本概念及其重要性。PFC电路通过储能和功率因数校正两大功能,解决交流电小电压大电流的问题,并减少无功电流损耗。文章对比分析了无源PFC(电感串联式、填谷式、LC谐振式)和有源PFC(升压型、交错并联、图腾柱式)的拓扑结构及适用场景。针对2400W双相逆变电源设计,作者选择图腾柱PFC拓扑,详细阐述了设计思路,包括电气参数计算、性能指标设定、技术重点及风险预判。文章还提供了主电路参数定制计算方法,如BOOST电感值的推导过程,为电源工程师提供实用参考。

lyzh971103的博客 2548

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

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。 Feign简介Feign是一种...

weixin_34044273的博客 120

第58篇:AI技术实战:基于深度学习的智能音频内容审核系统

深度学习技术为智能音频内容审核系统提供了强大的支持,通过CNN、RNN和Transformer等模型,能够实现高效的音频内容检测和过滤。使用TensorFlow和Keras可以快速构建和训练音频审核模型,而预训练模型则可以进一步提升性能。数据预处理、特征提取和性能优化是提升智能音频审核系统性能的关键。希望本文的代码示例和注意事项能帮助你更好地理解和应用这些技术。接下来,我们将继续探索更多AI技术实战案例。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 708

CVPR 2023 中的半监督学习: FixMatch 的升级版 UniMatch

我们首先回顾下发表在 NeurIPS 2020 上的 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence,FixMatch 是一种更轻量的半监督分类方法。如下图所示,FixMatch 首先使用模型(带标签数据训练后的)对弱增强的未标记图像进行预测,生成伪标签。对于给定的图像,只有在模型产生高置信度的预测时,伪标签才会被保留。然后,在输入同一图像的强增强版本时,训练模型预测伪标签。

NJU phd 在读。 2633

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

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34295316的博客 312

MiniQMT国债逆回购策略Python代码全解析

通过本文的介绍,我们不仅学习了如何在MiniQMT平台上使用Python编写国债逆回购策略,还对策略的逻辑构建、代码实现以及风险管理有了深入的了解。国债逆回购策略是一种适合初学者的低风险投资方式,希望本文能帮助你在量化交易的道路上迈出坚实的一步。

木头大左的博客 1919

Spring Cloud Feign作为HTTP客户端调用远程HTTP服务,feign熔断器

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。 Feign简介

liutong123987的专栏 1744

点云结构面智能识别与裂隙网络分析系统

点云结构面智能识别系统摘要 本系统采用深度学习与传统几何算法融合的方法,实现岩石结构面的智能识别与分析。系统包含7个核心模块:点云预处理、结构面识别、分组分割、参数计算、粗糙度分析、裂隙网络生成和可视化。技术路线结合PointNet++深度学习架构与RANSAC、区域生长等传统算法,通过预处理→深度学习识别→几何精修→参数计算→网络构建的流程实现高精度分析。预处理模块实现点云降噪、下采样和法向量估计,深度学习模块基于改进的PointNet++架构进行特征提取和分类。系统支持多种点云格式输入,提供完整的结构面

huanghm88的专栏 345

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 上线半天下载量破100W!阿里内部微服务进阶笔记,超详细
下一篇: 卷土重来!阿里内部强推的《分布式系统开发学习笔记》真的太强了
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值