Spring Cloud Feign客户端

Feign 学习

  • Feign简介

Feign是Spring Cloud的netflix下的组件之一,是一个声明式的RestFul的API客户端,同时还自带负载均衡的效果。

 

  • 为什么要使用Feign?

  1. 早期的RestTemplate调用微服务时,如果请求的url后面拼接很多参数时,那么在地址后面会拼接很多&参数={},看起来代码很长同时也不利于维护。

restTemplate.getForObject("http://localhost:9096/api/report/get/info/by/id?id= {id}",String.class,map);

    2. Feign能够将一些共用的API抽离出来,相当于一个接口,有利于降低代码的耦合度。

    3. Feign能够与Hystrix优雅的结合,在服务调用时,如果出现错误,那么可以直接将错误进行回调处理,如将错误通过日志记录下来。

      Feign的优势从这点就可以显示出来了,我们可以使用Feign来完成参数的拼接,我们不要自己去拼接很多参数。 同时Fegin使用@FeignClient()注解来完成负载均衡,通过发现eureka上注册的实例名来实现,底层还是用的ribbon。

 

 

  • 怎么使用Feign

我自己在github上写了一个小demo,搭建了一个简单的feign使用的环境:

  1. Github地址:  https://github.com/zzb15997937197/spring-cloud-feign

 

  • 注意事项

  1. 自己在搭建环境的时候,需要注意SpringBoot和SpringCloud的版本对应关系。
  2. EurekaServer和EurekaClient的版本最好统一,在这里我使用的是 starter下的eureka-server和eureka,当然也可以使用netflix下的eureka依赖。

       

  1. 在启动类上添加@EnableFeignClients()时,需要添加配置,扫描到指定包下@FeignClient()注解,否则报错。
  2. @FeignClient() 的name属性最好使用eureka上的注册实例名称。

 

  • Feign实战

   在项目中,可以在Feign中配置远程地址,实现单服务测试,即哪个服务有问题,我们就使用哪个服务来连接远程上服务器上的其他服务。

   我们在自定义@FeignClient接口时需要在启动的时候被扫描到:

@FeignClient(

        name = "${hcf.application.accounting.name:fec-accounting}",

        url = "${hcf.application.accounting.url:}",

        contextId = "AccountingClient"

)

 

1.在启动应用时,先禁用eureka客户端,即添加启动参数:

Eureka.client.enabled=false。

 2.指定激活的profiles为local
        

application-local.yml文件的配置如下:

 

 

在该文件里配置一下网关地址和各服务调用的地址,本地调用的话,直接使用主机ip+端口号即可:

hcf:
  gateway: http://fec-api-gateway-uat.internal.aegonthtf.com
  application:
    auth:
      url: ${hcf.gateway}/fec-auth
    mdata:
      url: ${hcf.gateway}/fec-mdata
    base:
      url: ${hcf.gateway}/fec-base
    expense:
      url: ${hcf.gateway}/fec-expense
    payment:
      url:  10.72.9.128:9088
    peripheral:
      url: ${hcf.gateway}/fec-peripheral
    prepayment:
      url: ${hcf.gateway}/fec-prepayment
    workflow:
      url: ${hcf.gateway}/fec-workflow
    accounting:
      url: ${hcf.gateway}/fec-accounting

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌托邦钢铁侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值