声明性REST客户端Feign

作者: 把代码写成诗 | 来源:发表于2019-03-11 19:56 被阅读79次

    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

    相关文章

      网友评论

        本文标题:声明性REST客户端Feign

        本文链接:https://www.haomeiwen.com/subject/rxkipqtx.html