上一节我们完成了feign的基本使用,学会了feign如何去调用其他微服务,这次我们来完成feign的一些自定义配置。

实现功能:

    1、全局修改feign的配置和单独修改feign客户端的配置
    2、修改feign默认的契约
    3、修改feign的日志级别
    4、根据url直接进行调用,RequestInterceptor
    5、配置feign请求和响应的压缩,增加请求拦截器(RequestInterceptor-实现添加额外的请求头)
    6、配置feign的超时时间
    7、配置重试
    8、使用hystrix fallback(略,到时候和hystrix集成时在加上)
    9、在配置文件中完成上面的配置功能

代码结构:

    eureka-server
        |- 服务注册中心
    feign-conf
        |- feign 的父项目
        product-provider-8085
        product-provider-8086
        product-provider-8087
        product-provider-8088
            |- 服务提供者,对外提供一个简单的商品查询接口,工程的代码大致上是一致的
            |- 8085和8086一组,spring.application.name=product-provider-01
            |- 8087和8088一组,spring.application.name=product-provider-02
        product-consumer-8089 (服务消费者)
            conf(feign的自定义配置)
                EurekaInfoUrlFeignConfiguration
                    |- 配置日志和RequestInterceptor(完成增加自定义请求头)
                ProductService01FeignConfiguration
                    |- 修改契约、日志级别、请求超时时间、重试策略和请求拦截器
            feign
                EurekaInfoUrlFeign
                    |- @FeignClient 中配置使用 url 直接访问某个服务
                ProductService01Feign
                    |- 针对product-provider-01的微服务进行自定义配置,使用的配置文件为ProductService01FeignConfiguration
                ProductService02Feign
                    |- 调用product-provider-02微服务
            controller
                EurekaInfoController
                    |- 请求地址:http://localhost:8089/eureka/info 测试feign直接使用url直连调用,返回注册中心信息
                Product01Controller
                Product02Controller
                    |- 请求地址:http://localhost:8089/product[01||02]/selectOne/{productId} 请求上方四个商品微服务,根据01或02不同看返回的结果,看针对product-provider-01的配置是否生效
             ApplicationProductConsumer8089

由上可知,我们有2组服务提供者product-provider-01和product-provider-02,如果下方没有特殊说明都是对01进行配置的。

全局修改feign的配置和单独修改feign客户端的配置

    使用java配置文件进行修改
        @FeignClient中configuration指定的类不可被spring boot上下文扫描到,扫描到就是全局配置,没有就是局部配置
    使用application.yml文件进行修改
        feign:
            client:
                config:
                  default:
                    配置的内容-就是全局的配置
                  具体的微服务的名称(spring.application.name的值)
                    配置的内容-就是局部配置

修改feign默认的契约

1、配置文件(ProductService01FeignConfiguration)的写法:

  2、feign客户端上的写法:

修改feign的日志级别

    1、配置文件中的写法

    2、application.yml文件中修改feign包所在的日志级别

配置feign请求和响应的压缩

    1、application.yml配置文件中的写法

    2、官网写法

    注意:

1、我使用的spring cloud的版本是Edgware.SR3,需要引入okhttp的jar包,不然程序启动报错。

2、增加okhttp的jar包

<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>

           3、feign的请求响应压缩的自动配置

配置feign的超时时间

    1、全局配置

    2、局部配置

配置重试

    此处配置的为不进行重试

根据url直接进行调用,设置请求拦截器(RequestInterceptor)

此处需要去访问我的eureka服务注册中心地址,但是我的eureka是有basic认证的,因此需要拦截器增加一个认证头才可以获取到信息。

   1、配置拦截器

   2、配置文件中的修改

在配置文件中完成上面的配置功能

    1、此处完成全局日志的配置和特定的feignClient的日志配置

 

    2、官网上一个较全的写法
使用hystrix fallback(略,到时候和hystrix集成时在加上)

部分运行结果:

完整代码:

https://gitee.com/huan1993/spring-cloud-parent/tree/master/feign-conf

spring cloud feign的各种配置的使用的更多相关文章

  1. Spring Cloud Feign 组成和配置

    Feign的组成 接口 作用 默认值 Feign.Builder Feign的入口 Feign.Builder Client Feign底层用什么去请求 和Ribbon配合时:LoadBalancer ...

  2. 笔记:Spring Cloud Feign Ribbon 配置

    由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参 ...

  3. 笔记:Spring Cloud Feign Hystrix 配置

    在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cl ...

  4. 笔记:Spring Cloud Feign 其他配置

    请求压缩 Spring Cloud Feign 支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗,我们只需要通过下面二个参数设置,就能开启请求与响应的压缩功能,yml配置格式如下: fei ...

  5. Spring Cloud Feign Ribbon 配置

    由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参 ...

  6. Spring Cloud Feign 在调用接口类上,配置熔断 fallback后,输出异常

    Spring Cloud Feign 在调用接口类上,配置熔断 fallback后,出现请求异常时,会进入熔断处理,但是不会抛出异常信息. 经过以下配置,可以抛出异常: 将原有ErrorEncoder ...

  7. Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 实践

    Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 目录 Spring Cloud Feign 自定义配置(重试.拦截与错误码处理) 实践 引子 FeignClient的 ...

  8. 笔记:Spring Cloud Feign 声明式服务调用

    在实际开发中,对于服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以我们通常会针对各个微服务自行封装一些客户端类来包装这些依赖服务的调用,Spring Cloud Feign 在此基础上做了进 ...

  9. Spring Boot + Spring Cloud 实现权限管理系统 配置中心(Config、Bus)

    技术背景 如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多.此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启, ...

随机推荐

  1. outerHTML和outerText的赋值是异步的

    用JavaScript操作DOM时,经常有生成复杂HTML结构的需求.此时,通常不是用标准DOM接口(如createElement().setAttribute().append()等)来语句式地生成 ...

  2. javascript,jquery在父窗口触发子窗口(iframe)某按钮的click事件

    $('iframe').contents().find(".btn").click(); 其中 contents(): 查找匹配元素内部所有的子节点(包括文本节点).如果元素是一个 ...

  3. 《如何进行接口mock测试》

    前言: Mock通常是指:在测试一个对象时,我们构造一些假的对象来模拟与其交互.而这些Mock对象的行为是我们事先设定且符合预期.通过这些Mock对象来测试对象在正常逻辑,异常逻辑或压力情况下工作是否 ...

  4. redis小结 1-2

    1.Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 c ...

  5. Python就业方向

    0.WEB开发 Python拥有很多免费数据函数库.免费web网页模板系统.以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django. ...

  6. 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 百篇博客分析OpenHarmony源码 | v5.05

    百篇博客系列篇.本篇为: v05.xx 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度谁 ...

  7. P5488-差分与前缀和【NTT,生成函数】

    正题 题目链接:https://www.luogu.com.cn/problem/P5488 题目大意 求一个长度为$n$的序列的$k$阶差分/前缀和. 解题思路 先考虑前缀和怎么做 搞出来生成函数就 ...

  8. P4233-射命丸文的笔记【NTT,多项式求逆】

    正题 题目链接:https://www.luogu.com.cn/problem/P4233 题目大意 随机选择一条有哈密顿回路的\(n\)个点的竞赛图,求选出图的哈密顿回路的期望个数. 对于每个\( ...

  9. P4831-Scarlet loves WenHuaKe【组合数学】

    正题 题目链接:https://www.luogu.com.cn/problem/P4831 题目大意 \(n*m\)的网格上放置\(2n\)个炮,要求互不能攻击. 数据满足\(n\leq m\leq ...

  10. Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...