博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud声明式服务调用Feign
阅读量:2378 次
发布时间:2019-05-10

本文共 1880 字,大约阅读时间需要 6 分钟。

前言

Feign除了提供Hystrix和Ribbon两者的功能之外,还提供了一种声明式的web服务端定义方式。

依赖

//注意是openfeign
org.springframework.cloud
spring-cloud-starter-openfeign

springcloud Feign是一个工具,它不仅整合了ribbon和hystrix两个强大功能,还提供了一种声明式的web服务端定义方式。查看该依赖包,默认引入了Ribbon和Hystrix,即负载均衡和熔断器的依赖。

Feign提供了可插拔的注解支持,只需给接口添加注解配置,即可完成对服务提供方的接口绑定。

  • 通过在程序启动类上添加@EnableFeignClients注解开启Feign 客户端的功能。
  • 接口上添加@FeignClient注解,来声明一个Feign 客户端,添加@EnableFeignClients注解会自动扫描添加了@FeignClient注解的接口
  • @FeignClient(value=“my-service”,configuration=FeingConfig.class),原有的serviceId属性已废弃,可以用name或value来替代;value为远程调用其他服务的服务名
  • 在Feign中,Client是非常重要的组件,默认情况下,Client是由HttpURLConnection来实现网络请求的,同时Client也支持HttpClient和OkHttp来进行网络请求。
//在UserServiceFeign接口内部,有个sayHello的方法,该方法通过Feign来调用my-service服务的/demo/hello接口@FeignClient(value = "my-service",configuration = FeignConfig.class, path="/demo")public interface UserServiceFeign{	@GetMapping(value="/hello")	String sayHello(@RequestParam(value="name")String name);}

Feign的客户端负载均衡是通过Ribbon实现的,在定义Feign客户端时,使用了@FeignClient注解,初始化过程中,Feign会根据注解的name或value属性指定的服务名,自动创建一个同名的Ribbon客户端。

HttpClient和OkHttp

工程中改变依赖可以改变网络请求框架:

com.netflix.feign
feign-httpclient
RELEASE
com.netflix.feign
feign-okhttp
RELEASE

Ribbon配置

Feign默认已经对Ribbon客户端负载均衡做了支持。

Feign默认实现了请求的重试机制。

Feign的超时时间是指Ribbon配置的超时时间。需要注意一点,Feign的超时与Hystrix的超时是两个概念,熔断是根据这两个时间设置的最小时间来熔断的。

请求处理的超时时间

ribbon:  ReadTimeout: 10000  ConnectTimeout: 10000

Hystrix配置

默认情况下,Feign会将所有Feign客户端的方法都封装到Hystrix命令中进行服务保护。

设置全局的超时时间,首先需要保证feign.hystrix.enabled=true

feign:  hystrix:    enabled: truehystrix:  command:    default:      execution:        isolation:          strategy: SEMAPHORE          thread:            timeoutInMilliseconds: 15000

服务降级配置

  • 1、为HelloService实现一个服务降级类HelloServiceFallback
  • 2、在服务绑定接口中,通过@FeignClient注解的fallback属性来指定对应的服务降级实现类

转载地址:http://jbaxb.baihongyu.com/

你可能感兴趣的文章
centos7 硬盘性能测试
查看>>
cgroup使用--cpu资源限制
查看>>
cgroup使用--memory资源限制
查看>>
Redis 单机环境搭建
查看>>
elasticsearch 单机环境搭建
查看>>
spark 独立模式部署
查看>>
Redis 基础命令 --- String篇
查看>>
Redis 基础命令 --- Hash篇
查看>>
Redis 基础命令 --- List篇
查看>>
Redis 基础命令 --- Set篇
查看>>
Redis数据库篇 -- 生存时间
查看>>
面向对象设计基本原则
查看>>
Redis数据库篇 -- 事务
查看>>
hadoop 完全分布式环境搭建
查看>>
HDFS 回收站
查看>>
hadoop 完全分布式HA高可用集群(手工切换)搭建
查看>>
hadoop 完全分布式HA高可用集群(自动切换)搭建
查看>>
Hbase shell常见命令
查看>>
看看这同一句sql,scan index占用的资源大了很多!!
查看>>
couldn't set locale correctly报错解决
查看>>