Feign定义
Feign 是服务客户端的声明,使用Feign创建一个接口并注解就能很简单的实现服务调用。这样的设计使得调用更加简单优雅。Feign支持可拔插的编码解码器。Feign默认集成了Ribbon,自带负载均衡的功能。Feign整合了Hystrix,可以很方便的实现熔断功能。
Feign例子
例子源码请参见:https://github.com/githubweili/springcloud/blob/master/spring-cloud-learn/cloud-consumer-feign
首先pom文件需要增加依赖 spring-cloud-starter-openfeign,其配置文件 application.yml 不需要改动。
java 代码 IHelloService.java,注解 @FeignClient value 值填写客户端名称,作用是去注册中心查找服务然后负载均衡。这里可以填写服务提供者cloud-service。也可以通过URL属性来指定URL。然后定义接口hello,在@RequestMapping 的value填写的是需要远程调用REST接口的路径。
自定义配置,注解可以通过 @FeignClient(configuration = FooConfiguration.class)来配置自定义的配置,这样会覆盖默认的配置值。FooConfiguration 可以配置 feign.Decoder,feign.Encoder和feign.Contract,注意不需要 @Configuration注解。
Feign 对 Hystrix 的支持
首先在 application.yml 中开启 hysteria 的功能,然后在@FeignClient(fallback = HelloServiceHystric.class) 中配置。然后HelloServiceHystric 实现 IHelloService 接口,接口中实现的 hello 方法就是异常情况下断路器的返回。这时候启动 cloud-consumer-feign项目,down掉服务提供者 cloud-service,用浏览器访问hello接口会看到效果 “feign, error”。
作者:把代码写成诗
版权所有,转载请注明出处
欢迎关注,沟通交流 https://github.com/githubweili
网友评论