上一节我们完成了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. system、 exec函数族、fork函数用法说明

    system(), exec函数族, fork函数用法说明 启动一个新线程的方式: system() 该函数经常用来在C程序中调用shell脚本或者命令行程序. 特点: 效率低下,首先需要创建一个sh ...

  2. Spring Cloud Eureka 之常用配置解析

    [原创内容,转载.引用请注明出处] 1. 配置项解析 1.1 通用配置 # 应用名称,将会显示在Eureka界面的应用名称列 spring.application.name=config-servic ...

  3. JavaScrip中 Array.reduce()

    数组的方法 reduce() reduce方法在数组的每一项元素上都会执行回调函数. 语法:array.reduce( callBack [ , init]  ) // 语法arrary.reduce ...

  4. K8s 开始

    Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统.本文将介绍如何快速开始 K8s 的使用. 了解 K8s Kubernetes / Overview 搭建 K8s 本地开发测试 ...

  5. CodeForce-803B Distances to Zero(贪心DP)

    Distances to Zero CodeForces - 803B 题意:给定一个数列 a0, a1, ..., an - 1.对于数列中的每一项都要求出与该项最近的0与该项的距离.保证数列中有至 ...

  6. java线程day-01

    综述:下面写的是我学习java线程时做的一些笔记和查阅的一些资料总结而成.大多以问答的形式出现. 一.什么是线程? 答:线程是一个轻量级的进程,现在操作系统中一个基本的调度单位,而且线程是彼此独立执行 ...

  7. 免费iApp后台-云接口

    免费稳定,UI易懂简洁,功能强大 应用名称:云接口 应用版本:1.5.9 应用大小:3.55 MB 适用平台:Android(安卓) 应用用处:详情请下载软件 软件安全无毒 更新内容: 1.支付宝当面 ...

  8. 怎么通俗的理解Netty呢?

    目录 Netty(3.X) 简单体验 Netty的事件驱动机制 Netty的源码阅读 Netty(3.X) 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,W ...

  9. css定位:p:nth-child(n)

    p:nth-child(n) 定位p标签下的第一个元素,下标从1开始. 首先是一个标签下有多个相同的元素. 如index_service_cnt js_service_list下有多个class=&q ...

  10. LR11自带网站

    LR自带的飞机订票系统 启动服务:安装路径\HP\LoadRunner\WebTours下的StartServer.bat 打开网页:地址  http://127.0.0.1:1080/WebTour ...