上一节我们完成了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. session案例之验证码

    一.需求分析 其中,一张图片就是一个单独的请求: 一个验证验证码的Servlet,还有一个验证用户名和密码的Servlet,两次都可能有错误信息返回到前端页面,所以前面页面要从request域中获取返 ...

  2. list使用详解

    List双向链表 再谈链表 List链表的概念再度出现了,作为线性表的一员,C++的STL提供了快速进行构建的方法,为此,在前文的基础上通过STL进行直接使用,这对于程序设计中快速构建原型是相当有必要 ...

  3. PHP设计模式之状态模式

    状态模式从字面上其实并不是很好理解.这里的状态是什么意思呢?保存状态?那不就是备忘录模式了.其实,这里的状态是类的状态,通过改变类的某个状态,让这个类感觉像是换了一个类一样.说起来有点拗口吧,先学习概 ...

  4. LINUX服务器 安装定时任务 设置定任务 Liux定时关机

    1.先查看是否安装crond yum list installed | grep cron 若没有安装: yum -y install vixie-cron yum -y install cronta ...

  5. 手机访问pc网站自动跳转手机端网站PHP代码

    $agent = $_SERVER['HTTP_USER_AGENT']; if(strpos($agent,"comFront") strpos($agent,"iPh ...

  6. ecshop 首页调用指定分类下的销售排行

    /*首页调用指定分类下的销售排行*/ function get_cats_top10($cat = '') { $sql = 'SELECT cat_id, cat_name ' . 'FROM ' ...

  7. Docker系列(1) - Centos8.X安装Docker

    环境准备 需要会Linux的基础 Centos8.x 使用Xshell连接远程服务器 环境查看 #系统内核是4.18以上 [root@localhost ~]# uname -r 4.18.0-305 ...

  8. Centos7.6安装python3.6.8

    yum -y install bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel ...

  9. 一篇文章搞定Selenium元素定位/封装/数据驱动

    小伙伴都知道,自动化最重的,又最"难"(因为实战中会碰到定位的各种坑)那就是定位元素.如果不熟练掌握定位,那只怕你比功能测式的小伙伴下班还会要晚!扎心了吧! Selenium常用定 ...

  10. Jmeter压测学习5---HTTP Cookie管理器

    我司项目暂时不需要,直接转载:https://www.cnblogs.com/yoyoketang/p/11963342.html 前言 web网站的请求大部分都有cookies,jmeter的HTT ...