当前位置:首页 > 技术分析 > 正文内容

OpenFeign常用配置(openfeign入门)

ruisui883个月前 (02-03)技术分析18

1、快速入门:

OpenFeign是一个声明式的http客户端,是spring cloud在eureka公司开源的feign基础上改造而来。其作用及时基于springmvc的常见注解,帮我们优雅的实现http请求的发送。

以下配置都是基于各自项目基础上的,因此这里不会将所有配置都罗列出来,取决于各自项目配置。

OpenFeign已经被SpringCloud自动装配,实现起来比较简单:

1.1、引入依赖

包括OpenFeign和负载均衡组件SpringCloudLoadbalancer,版本问题都在顶级pom文件定义,此处不在展示

<!--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>

1.2、启用OpenFeign

通过@EnableFeignClients注解,启用OpenFeign功能,例如Gateway模块启动类

说明:

basePackages:指定OpenFeign接口路径

defaultConfiguration:指定OpenFeign配置类,具体查看项目源码

2、实践

OpenFeign对http请求做了优雅的伪装,不过其底层发起http请求,依赖于其它的框架。这些框架可以自己选择,包括以下三种:

HttpURLConnection:默认实现,不支持连接池

Apache HttpClient:支持连接池

OKHttp:支持连接池

具体源码可参考FeignBlockingLoadBalancerClient类中的delegate成员变量。

整合,OpenFeign整合OKHttp的步骤如下:

2.1、引入依赖

在快速入门的基础上引入以下依赖使用连接池

<!--okhttp-->

<dependency>

<groupId>io.github.openfeign</groupId>

<artifactId>feign-okhttp</artifactId>

</dependency>

2.2、开启连接池功能

2.3、模块划分

单独增加存放远程调用接口模块 edu-api

需要在对应业务模块引入且启动类需要增加包路径指定(包路径一致可忽略),否则启动报错,例如在gateway网关模块pom文件引入

<!--edu-api模块-->

<dependency>

<groupId>com.xxw.itsx</groupId>

<artifactId>edu-api</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>

当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用,有两种方案解决:

方案一:指定FeignClient所在包

方式二:指定FeignClient字节码

2.4、日志

OpenFeign只会在FeignClient所在包的日志级别为debug时,才会输出日志。而且其日志级别由4级:

NONE:不记录任何日志信息,这是默认值

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

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

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

**备注:由于Feign默认的日志级别时NONE,所以默认我们看不到请求日志。**

要自定义日志级别需要声明一个类型为Logger.Level的Bean,在其中定义日志级别:

此时这个bean并未生效,在对应的类没有加配置类注解,要想配置某个FeignClient的日志,可以直接在@FeignClient注解中声明

如果想要全局配置,让所有FeignClient都按照这个日志配置,则需要在@EnableFeignClients注解中声明

2.5、重试

重试配置,额外增加一个bean即可,如下

6、限制请求和响应时间

/**

* 对请求的连接和响应时间进行限制

*/
@Bean

public Request.Options options() {

return new Request.Options(

5000, TimeUnit.MICROSECONDS,

5000,TimeUnit.MILLISECONDS, true);
}


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1174.html

标签: feign 使用
分享给朋友:

“OpenFeign常用配置(openfeign入门)” 的相关文章

gitlab 分支保护设置

一、功能描述代码管理中管理,我们把稳定的分支设置为保护,可以防止其他人员误操作(例如删除,合并,推送代码等)。二、Gitlab配置步骤1 点击项目Repository标签2.点击Expand标签3.配置如下:默认master是被保护的,而且只有维护人员具有推送和合并权限。设置保护分支,这里的beta...

「Git迁移」三行命令迁移Git包含提交历史,分支,tag标签等信息

问题描述:公司需要将一个git远程服务器的全部已有项目迁移到一台新服务器的Gitlab中,其中需要包含全部的提交纪录,已有的全部分支与全部打tag标签,目前此工作已全部迁移完毕,特此记录一下操作步骤环境描述:1. 要迁移的远程Git:Gitblit2. 迁移目的Git:Gitlab3. 暂存代码的P...

编码 10000 个小时后,开发者悟了:“不要急于发布!”

【CSDN 编者按】在软件开发的道路上,时间是最好的老师。根据“一万小时定律”,要成为某个领域的专家,通常需要大约一万小时的刻意练习。本文作者身为一名程序员,也经历了一万小时的编程,最终悟出了一个道理:慢即是快,重视架构设计和代码质量,确保每一行代码都经得起时间的考验。作者 | Sotiris Ko...

7 招教你轻松搭建以图搜图系统

作者 | 小龙责编 | 胡巍巍当您听到“以图搜图”时,是否首先想到了百度、Google 等搜索引擎的以图搜图功能呢?事实上,您完全可以搭建一个属于自己的以图搜图系统:自己建立图片库;自己选择一张图片到库中进行搜索,并得到与其相似的若干图片。Milvus 作为一款针对海量特征向量的相似性检索引擎,旨在...

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

2024年,不断突破的一年

迈凯伦F1车队不久前拿下了2024年度总冠军,距离上一次还是二十几年前。在此期间,另一领域内,一个充满革新活力的腕表品牌——RICHARD MILLE理查米尔,正不断发展,与F1运动、帆船、古董车展等领域,共享着对速度与极限的无尽向往。RICHARD MILLE的发展与F1车手们在赛道上的卓越表现交...