Feign的简介及使用

一、Feign简介

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign

其作用就是帮助我们优雅的实现http请求的发送,解决代码可读性差,编程体验不统一、参数复杂URL难以维护的问题。

 二、使用Feign的步骤

1.引入依赖

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

2.编写Feign客户端

 主要是基于SpringMVC的注解来声明远程调用的信息,比如:

  • 服务名称:userservice
  • 请求方式:GET
  • 请求路径:/user/{id}
  • 请求参数:Long id
  • 返回值类型:User

 3. 在消费者启动类添加注解开启Feign的功能

4.在消费者服务中使用客户端

 三、自定义Feign的配置

Feign运行自定义配置来覆盖默认配置,可以修改的配置如下:

类型

作用

说明

feign.Logger.Level

修改日志级别

包含四种不同的级别:NONE、BASIC、HEADERS、FULL

feign.codec.Decoder

响应结果的解析器

http远程调用的结果做解析,例如解析json字符串为java对象

feign.codec.Encoder

请求参数编码

将请求参数编码,便于通过http请求发送

feign. Contract

支持的注解格式

默认是SpringMVC的注解

feign. Retryer

失败重试机制

请求失败的重试机制,默认是没有,不过会使用Ribbon的重试

一般我们需要配置的就是日志级别。 

配置Feign的日志文件一般有2种方式,选择其一即可

第一种是yaml配置方法

 第二种是使用java代码方式,需要先声明一个Bean

public class DefaultFeignConfiguration {@Beanpublic Logger.Level logLevel(){return Logger.Level.BASIC;}
}

 四、Feign的性能优化

Feign底层的客户端实现:

  1. URLConnection:默认实现,不支持连接池
  2. Apache HttpClient :支持连接池
  3. OKHttp:支持连接池

优化Feign的性能主要包括:

  • 使用连接池代替默认的URLConnection
  • 日志级别,最好用basic或none

添加依赖

<!--httpClient的依赖 -->
<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-httpclient</artifactId>
</dependency>

在消费者的yaml配置文件中添加连接池配置

feign:client:config:default: # default全局的配置loggerLevel: BASIC # 日志级别,BASIC就是基本的请求和响应信息 httpclient:enabled: true # 开启feign对HttpClient的支持max-connections: 200 # 最大的连接数max-connections-per-route: 50 # 每个路径的最大连接数

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

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

相关文章

架构愿景: 构建良好软件的关键

在产品开发生命周期的各个阶段&#xff0c;牢记架构愿景&#xff0c;始终坚持每个决策都符合愿景原则&#xff0c;是避免架构腐化的唯一方式。原文: Architecture Vision — A critical ingredient in building well-maintained software 上一篇文章《软件架构: 一切皆有代价》…

Feign原理

是一个HTTP请求调用轻量级框架&#xff0c;可以以Java接口注解的方式调用HTTP请求&#xff0c;而不用像Java中通过封装HTTP请求报文的方式直接调用。 Feign解决了什么问题 在服务调用的场景中&#xff0c;我们经常调用基于HTTP协议的服务&#xff0c;而我们经常使用到的框架可…

Feign是什么?

Feign能干什么&#xff1f; Feign旨在是编写Java Http客户端变得更加容易。 之前使用RibbonRestTemplate时&#xff0c;利用RESTTemplate请求的封装处理&#xff0c;形成了一套模板化的调用方法。但是在实际开发中&#xff0c;有偶遇对于服务依赖的调用可能不止一处&#xff…

Feign 与 OpenFeign

1. 什么是Feign Netflix Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件&#xff08;例如 Eureka、Ribbon 以及 Hystrix 等&#xff09;一起整合进 Spring Cloud Netflix 模块中&#xff0c;整合后全称为…

Feign的工作原理

文章目录 Feign的简单介绍Feign的工作原理1.创建远程接口的本地代理实例2.封装Request对象并进行编码3.feign.Client发送请求并对获取结果进行解码 总结 Feign的简单介绍 Feign组件主要用于微服务项目中&#xff0c;用来简化服务之间的远程调用&#xff0c;相信大家对他的使用…

OpenFeign和feign使用简介

1.OpenFeign简介 Feign是一个声明式的Web Service客户端。它的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解&#xff0c;比如&#xff1a;FeignClient注解。Feign有可插拔的注解&#xff0c;包括Feign注解和JAX-RS注解。 Feign也支持编码…

Feign详解与实例

基本介绍 Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样&#xff0c;从避免了调用目标微服务时&#xff0c;需要不断的解析/封装json 数据的繁琐。Feign集成了Ribbon。Ribboneureka是面向微服务编程&#xff0c;而Feign是面向接口编程。 Fegin是一个…

FeignClient

FeignClient的调用 注意&#xff1a; 依赖可能会出现冲突&#xff0c;请根据spring-cloud版本选择并修改 1. 引入依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artif…

Feign的介绍

Feign是springcloud里面的一个功能组件&#xff0c;那么它是实现一个什么功能呢&#xff1f; 首先我们可以先从字面意思上去理解一下它&#xff0c;Feign&#xff0c;英文翻译过来就是伪装的意思&#xff0c;实际上它的功能也是和伪装相关的&#xff0c;在我们之前在客户端配置…

@FeignClient使用详解

FeignClient标签的常用属性如下&#xff1a; name&#xff1a;指定FeignClient的名称&#xff0c;如果项目使用了Ribbon&#xff0c;name属性会作为微服务的名称&#xff0c;用于服务发现url: url一般用于调试&#xff0c;可以手动指定FeignClient调用的地址decode404:当发生h…

Feign详解

一. Feign概述 Feign是Spring Cloud提供的声明式、模板化的HTTP客户端&#xff0c; 它使得调用远程服务就像调用本地服务一样简单&#xff0c;只需要创建一个接口并添加一个注解即可。 Spring Cloud集成Feign并对其进行了增强&#xff0c;使Feign支持了Spring MVC注解&#x…

Feign(简介和使用)

1. Feign介绍 通过RestTemplate调用其它服务的API时&#xff0c;所需要的参数须在请求的URL中进行拼接&#xff0c;如果参数少的话或许我们还可以忍受&#xff0c;一旦有多个参数的话&#xff0c;这时拼接请求字符串就会效率低下 Feign是一个声明式的Web Service客户端&#…

什么是Feign?

服务间调用介绍 现有的服务调用方式 利用拼接的方式。 虽然上面有的用不错就很好了 Feign解决了什么问题 Feign的调用方式 Feign体系架构解析-武装到牙齿 上一节我们了解了feign的主要功能&#xff0c;它就像一个自拍杆一样&#xff0c;方便了Eureka的远程调用。可是怎么看…

简单理解Feign的原理与使用

文章目录 SpringCloud 总架构图一、简介1.1、负载均衡的概念2.2、Feign概念 二、入门案例2.1、导入依赖2.2、Feign的客户端2.3、调用Feign2.4、开启Feign功能2.5、启动测试2.6、Feign实现原理简单分析 三、负载均衡(Ribbon)四、熔断器支持五、请求压缩和响应压缩六、配置日志级…

Feign基本使用(超详细)

目录 一、Feign概述 二、Feign入门 1.创建服务提供者(provider) 2.创建feign接口 3、创建服务消费者(consumer) 三、Feign 原理 四、Feign优化 1、开启feign日志 2、feign超时问题 3、http连接池 4、gzip压缩 前言 当我们通过RestTemplate调用其它服务的API时&#xff0c;所…

中外黑客两则

外国一则&#xff1a;丹尼斯麦卡利斯泰尔里奇。挑选他的原因&#xff1a;帅。 &#xff08;英语&#xff1a;Dennis MacAlistair Ritchie&#xff1b;1941年9月9日&#xff0d;2011年10月12日[3][4]&#xff09;&#xff0c;著名的美国计算机科学家&#xff0c;对C语言和其他编…

git使用X篇_2_Git全套教程IDEA版(git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容)

本文是根据以下视频及网上总结进行更新后的介绍git使用的博文。包含了git、GitHub、Gitee码云、搭建公司内部GitLab、与IDEA集成等内容。 笔记来源&#xff1a;【尚硅谷】5h打通Git全套教程IDEA版&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 文章目录 初识 Git0、内容…

Axure原型模板、元件库、组件库

在产品设计中&#xff0c;随时会使用到相似场景&#xff0c;每次都反复绘制耗时耗力。 若使用通用模板即可快速提高设计效率。 下面给大家提供一个登录多种验证系统框架模板&#xff0c;可快速修改使用。 预览链接&#xff1a; Axure高保真原型设计、Axure元件库、产品交互…

AXURE9最全的WEB设计元件库(分享版).rplib

Axure9常用到的WEB设计元件库&#xff0c;在Axure点击号即可导入元件库使用&#xff0c;或者打开Axure R9安装目录&#xff0c;进入DefaultSettings\Libraries&#xff0c;复制资源到此目录并重启Axure软件即可看到。 文件&#xff1a;590m.com/f/25127180-481124286-469239 &…

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标、移动元件库、axure元件库、axure原型

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标等 移动端通用元件库、app通用元件库、数据展示、操作反馈、通用模板、数据录入、列表页、表单页、详情页、通用版布局、移动端手机模…