`

spring cloud feign的各种配置的使用

阅读更多

    在上一节我们完成了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

  • 大小: 18 KB
  • 大小: 42.2 KB
  • 大小: 17.2 KB
  • 大小: 73.1 KB
  • 大小: 11.2 KB
  • 大小: 30.3 KB
  • 大小: 120.7 KB
  • 大小: 4.3 KB
  • 大小: 16 KB
  • 大小: 10.7 KB
  • 大小: 21.7 KB
  • 大小: 41.3 KB
  • 大小: 14.4 KB
  • 大小: 42 KB
  • 大小: 3.6 MB
分享到:
评论

相关推荐

    Spring Cloud Feign统一设置验证token实现方法解析

    在Spring Cloud Feign中,我们可以使用FeignConfiguration来配置Feign组件的行为。在这里,我们可以创建一个FeignConfiguration配置类来配置Feign组件的日志和拦截器。例如,我们可以创建一个...

    微服务springcloud之feign使用demo

    RS注解,SpringCloud又为Feign增加了对SpringMVC注解的支持,同时为了能够使用和Spring Web中默认使用的相同的httpMessageConverter,SpringCloud集成了Ribbon和Eureka,用来在使用Feign时能够为其提供一个负载均衡...

    springcloud feign 服务消费者 类似 webservice

    Spring Cloud Feign是Spring Cloud生态系统中的一个组件,它作为一个声明式的服务调用客户端,使得编写Web服务客户端变得简单。Feign的设计灵感来源于Netflix的Feign库,它的主要目的是简化微服务之间的通信,使得...

    spring cloud feign demo

    Spring Cloud Feign 是一个声明式的 Web 服务客户端,它使得编写 Web 服务客户端变得简单。Feign 让消费者能够以一种声明式的方式定义接口,这些接口将被自动映射到 HTTP 请求。它整合了 Ribbon 和 Eureka,可以方便...

    springcloud feign服务间的相互调用.doc

    我们需要在pom.xml文件中添加相关依赖项,以便使用 Spring Cloud Feign。在上述pom.xml文件中,我们可以看到有多个依赖项,包括spring-cloud-starter-netflix-eureka-server、spring-boot-starter-test等。这些依赖...

    spring cloud feign方式使用服务

    【Spring Cloud Feign服务使用详解】 在分布式系统中,服务间的通信是至关重要的,Spring Cloud Feign就是一种声明式的服务调用工具,它使得服务之间的调用变得简单且直观。Feign是Netflix开源的一个接口绑定工具,...

    spring cloud feign实现远程调用服务传输文件的方法

    在本文中,我们将介绍如何使用 Spring Cloud Feign 实现远程调用服务传输文件的方法。 Feign 介绍 Feign 是一个声明式的 Web 服务客户端,它可以将 Java 接口转换为对应的 HTTP 请求。Feign 使得 Java 程序员可以...

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

    Spring Cloud Feign通过提供默认配置类以及注解参数,允许开发者进行这些定制化配置。 Feign的默认配置类为FeignClientsConfiguration,位于spring-cloud-netflix-core的jar包中。这个类默认注入了多个Feign相关的...

    SpringCloud之Feign

    【SpringCloud之Feign】是Spring Cloud生态体系中一个重要的组件,主要用于服务间的调用,实现了声明式的服务调用,极大地简化了微服务之间的通信。Feign基于Netflix Hystrix进行了整合,支持服务熔断,提高了系统的...

    springcloud feign整合hystrix(服务降级).doc

    在Spring Cloud微服务架构中,Feign和Hystrix是两个重要的组件,它们协同工作以实现服务间的调用和容错处理。Feign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得简单,而Hystrix则是一个用于处理延迟和...

    springcloud-feign.zip

    springcloud整合openFeign,包括feign的基本使用、传参、指定特定的服务器、负载均衡等使用方法。 模块有: springcloud-feign-api springcloud-feign-consumer springcloud-feign-provider springcloud-feign-...

    75-Spring Cloud Feign使用笔记1

    在本文中,我们将深入探讨如何使用 Feign,并了解其与 Spring Cloud 结合的工作原理。 首先,要在主应用类中启用 Feign,你需要添加 `@EnableFeignClients` 注解。这会告诉 Spring 扫描并创建 Feign 客户端实例,...

    SpringCloud之四 负载均衡Feign

    - **@RequestMapping** 和其他Spring MVC的注解:在Feign的接口中使用这些注解来定义请求的URL、HTTP方法和其他相关配置。 - **@Param**:用于将方法参数与模板表达式关联起来。 - **@Headers**:定义请求头,可以...

    详解Spring Cloud Feign 熔断配置的一些小坑

    Spring Cloud Feign 熔断配置详解 作为一名经验丰富的IT行业大师,我将详细解释Spring Cloud Feign 熔断配置中的一些小坑,并提供相应的解决方案。 一、Feign熔断配置报错 在使用Feign做服务调用时,使用继承的...

    Spring Cloud中关于Feign的常见问题总结

    SpringCloud中关于Feign的常见问题总结,包括常用的请求注解、@PathVariable、FeignClient多参数的构造等

    Spring Cloud 之 Eureka集群整合Zuul、Feign-源码

    在实际开发中,还需要考虑安全、性能优化等因素,例如使用Ribbon进行客户端负载均衡,添加Hystrix熔断机制以防止服务雪崩,以及使用Spring Cloud Gateway替换Zuul以获取更多高级特性。 总之,通过Eureka集群实现...

    糞坑-SpringCloud中使用Feign的坑

    本文将深入探讨在SpringCloud中使用Feign时可能出现的问题,并提供解决方案。 首先,我们来理解Feign的工作原理。Feign是基于Java的注解和HTTP的客户端,它可以创建一个接口并将其动态地实现为HTTP客户端。通过在...

    SpringCloud-创建服务消费者-Feign方式示例代码.zip

    在这个名为"SpringCloud-创建服务消费者-Feign方式示例代码.zip"的压缩包中,我们预计将看到一个简单的Spring Cloud应用,该应用展示了如何利用Feign作为服务消费者来调用其他服务。 首先,让我们了解Feign的基本...

    38-Spring Cloud Feign重试1

    Spring Cloud Feign 重试机制是微服务架构中不可或缺的一部分,它确保了服务间的通信可靠性。Feign 是基于声明式的客户端,它通过 Ribbon 进行客户端负载均衡来调用其他服务。Ribbon 提供了自动重试的功能,使得在...

    spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法

    在使用spring cloud feign时,我们可能会遇到org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported的报错,这是因为feign client中的RequestMethod.GET或@...

Global site tag (gtag.js) - Google Analytics