在上一节我们完成了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. .net中使用JSON

    在.NET使用JSON作为数据交换格式 ASP.NET中JSON的序列化和反序列化 三种方式: 使用System.Web.Script.Serialization.JavaScriptSerializ ...

  2. VUE002. 动态使用webpack打包处理后的静态图片路径({ img: require('xxx.png') })

    案例摘要 需求是通过v-for循环渲染数组中数据,其中包括本地包的图片文件.话不多说直接上代码: <a-radio-group class="template-radio"& ...

  3. 基于django2.2的网页构建

    安装django pip install django==2.2 建一个在线商城的项目 django-admin startproject pyshop 启动项目 python manage.py r ...

  4. PTA 面向对象程序设计 6-3 面积计算器(函数重载)

    6-3 面积计算器(函数重载) 实现一个面积计算器,它能够计算矩形或长方体的面积. 函数接口定义: int area(int x, int y); int area(int x, int y, int ...

  5. gentoo(贱兔) Linux作业系统的基本使用

    emerge是gentoo linux的portage包管理器的命令行工具emerge的基础使用:emerge 软件包名:安装某软件包 emerge nanoemerge --ask 软件包名:交互式 ...

  6. js 之k个一组翻转链表

    题目描述 将给出的链表中的节点每\ k k 个一组翻转,返回翻转后的链表如果链表中的节点数不是\ k k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身.要求空间复杂度 \ O ...

  7. ecshop调用商品的购买次数方法

    这时候我们修改一下 写成一个函数放到lib_goods.php 这样就可以随便调用了 --------------------------------------------------------- ...

  8. OC源码剖析对象的本质

    1. 类的底层实现 先写一个 Person 类: @interface Person : NSObject @property (nonatomic, copy) NSString *p_name; ...

  9. jmeter监控linux服务器资源

    https://blog.csdn.net/weixin_38102592/article/details/100136375 https://blog.csdn.net/liuqiuxiu/arti ...

  10. nginx 常用x代码

    1.nginx 禁止ip直接访问,只允许域名访问,直接在.conf文件里 server上面再添加一个server 代码,不可以写同一个server里: server { listen 80 defau ...