Feign使用Demo

  • A+
所属分类:SpringCloud

Feign使用Demo

Spring Cloud Feign 基于Netflix Feign实现,整合了Spring Cloud RibbonSpring Cloud Hystrix,并提供一种声明式的Web服务客户端定义方式

环境:

Windows 10 17134.320

Java version "1.8.0_131"

IntelliJ IDEA 2018.2.4 (Ultimate Edition)

Apache Maven 3.5.0

参考资料:

    https://blog.csdn.net/forezp/article/details/73480304

 

新建主工程

Feign使用Demo

Feign使用Demo

    找到POM文件

    Feign使用Demo

Pachaging改成pom

新建eureka模块

Feign使用Demo

Feign使用Demo

Feign使用Demo

在resource下新建application.yml文件,内容如下

Feign使用Demo

Eureka启动类增加@EnableEurekaServer注解,右键启动

Feign使用Demo

 

Feign使用Demo

服务提供者

Feign使用Demo

依赖:勾选web和EurekaDiscovery

Feign使用Demo

新建application.yml,内容如下

Feign使用Demo

通过eureka.client.serviceUrl.defaultZone指定eureka注册地址,如果你的eureka服务配置了context-path,需要在端口后面加上

 

启动类添加@EnableDiscoveryClient注解和@RestController注解

添加一个测试方法

Feign使用Demo

右键运行,可以看到日志中的eureka注册信息

Feign使用Demo

访问eureka服务端,可以看到已注册的服务

Feign使用Demo

浏览器访问 http://127.0.0.1:8091/hi/qzkj

Feign使用Demo

Feign客户端

Feign使用Demo

依赖:基本与服务提供者相同,多了一个feign的依赖

Feign使用Demo

Application.yml

Feign使用Demo

新建一个接口,内容如下

@FeignClient注解中的value为你需要远程访问的服务的服务名,即上面的服务提供者application.yml文件中spring.application.name的值

如果服务提供者application.yml中指定了context-path,需要使用path属性将context-path添加进来

Feign使用Demo

新建一个Controller,内容如下:

Feign使用Demo

启动类添加@EnableFeignClients和@EnableDiscoveryClient注解,右键启动

Feign使用Demo

Feign使用Demo

Feign使用Demo

浏览器访问 http://127.0.0.1:8101/hiFeign/qzkj

Feign使用Demo

Feign调用成功

FeignClient注解

属性

Feign使用Demo

  • valuename:两者等效,指定FeignClient的名称,如果项目使用了Ribbonname属性会作为微服务的名称,用于服务发现
url: url一般用于调试,可以手动指定@FeignClient调用的地址
  • decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
configuration: Feign配置类,可以自定义FeignEncoderDecoderLogLevelContract

  • fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口,在使用fallback属性时,需要使用@Component注解,保证fallback类被Spring容器扫描到
fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
  • path: 定义当前FeignClient的统一前缀

熔断器

在feign远程调用失败时可实现服务降级

 

在application.yml中启用hystrix Feign使用Demo

新建FeignService的实现类,使用@Component注解标注

在FeignService的@FeignClient注解中通过 fallback属性指定对应的服务降级实现类

 

  1. # 负载均衡

Feign客户端的负载均衡是通过ribbon实现的,可以直接通过配置ribbon客户端的方法来自定义调用参数

 

@FeignCLient初始化过程中会根据注解的value属性指定的服务名,自动创建一个同名的Ribbon客户端,可以通过value属性值来设置对应的Ribbon参数

Feign使用Demo

weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: