在上一节我们完成了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统一设置验证token实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
RS注解,SpringCloud又为Feign增加了对SpringMVC注解的支持,同时为了能够使用和Spring Web中默认使用的相同的httpMessageConverter,SpringCloud集成了Ribbon和Eureka,用来在使用Feign时能够为其提供一个负载均衡...
springcloud feign 服务消费者 类似 webservice ====== http://knight-black-bob.iteye.com/blog/2356222
springcloud feign整合hystrix 示例,希望对大家有所帮助
主要介绍了Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
springcloud整合openFeign,包括feign的基本使用、传参、指定特定的服务器、负载均衡等使用方法。 模块有: springcloud-feign-api springcloud-feign-consumer springcloud-feign-provider springcloud-feign-...
主要介绍了spring cloud feign实现远程调用服务传输文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SpringCloud之Feignhttps://blog.csdn.net/u012081441/article/details/80763738
SpringCloud中关于Feign的常见问题总结,包括常用的请求注解、@PathVariable、FeignClient多参数的构造等
SpringCloud之四 负载均衡Feign,使用Feign进行微服务的负载均衡处理
文档:https://blog.csdn.net/jameshadoop/article/details/82026772
18.Spring Cloud中Feign配置详解 19.Spring Cloud中的API网关服务Zuul 20.Spring Cloud Zuul中路由配置细节 21.Spring Cloud Zuul中异常处理细节 22.分布式配置中心Spring Cloud Config初窥 23.Spring Cloud ...
NULL 博文链接:https://huangyongxing310.iteye.com/blog/2381467
SpringCloud eureka zuul feign 负载均衡 微服务
springcloudf feign 服务间相互调用示例
spring cloud eureka zuul ribbon hystrix feign config 示例代码
Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh spring-cloud-config-bus-rabbitMQ Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)
主要介绍了SpringCloud Feign的使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring Cloud中使用Feign,将feign框架整合到Spring Cloud之中,实现负载均衡等低耦合客户端