Spring Cloud 全家桶之Spring Cloud Feign

(努力到这里啦!加油!)

在之前的笔记中,我们用了eureka+rest+ribbon的方法实现服务注册和服务调用。如果具体的用Ribbon调用服务的话,他还有有点复杂的,所以Spring cloud Feign 就来啦!

Spring Cloud Feign 是一个声明web服务客户端,它使编写web服务客户端更加容易,使Feign创建一个接口并对他注解。它整合了Ribbon和Hystrix,从而不再需要显式地使用这两个组件。Feign还提供了HTTP请求的模板,通过编写简单的接口和注解,就可以定义好HTTP请求的参数、格式、地址等信息。接下来,Feign会完全代理HTTP请求,我们只需要像嗲用 方法一样调用它就可以完成服务请求。Spring Cloud增加了对Spring MVC的注解,Spring Web默认使用了HttpMessageConverters,Spring Cloud集成Ribbon和Eureka提供的负载均衡的HTTP客户端Feign。

Feign的特性如下:

  1. 它具有可插拔的注解支持包括Feign注解与JAX-RS注解
  2. Feign还支持可插拔的编码器与解码器
  3. 支持Ribbon负载均衡
  4. 支持Hystrix和它的fallback
  5. 支持HTTP请求和响应的压缩

Feign Consumer:服务消费者

  • 添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
  • 开启Feign

通过添加@EnableFeignClient注解开启Feign的功能

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class FeignConsumerApplication {

   public static void main(String[] args) {
      SpringApplication.run(FeignConsumerApplication.class, args);
   }
}

  • 定义接口

通过@FeignClient("服务名")定义接口,指定调用哪个服务。比如如下定义了调用eureka-provider服务的“/”接口,定义consumer()

@FeignClient("eureka-provider")
public interface  HomeClient {

    @GetMapping("/")
    String consumer();
}

  • 消费方法

编写一个Controller,消费提供者的home()方法,与Ribbon不同的是,这里构建并初始化的是接口homeClient,hello()调用homeClient的consumer(),

@RestController
public class ConsumerController {

    @Autowired
    private HomeClient homeClient;

    @GetMapping(value = "/hello")
    public String hello() {
        return  homeClient.consumer();
    }
}

  • 配置

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8080/eureka/

spring:
  application:
    name: feign-consumer

server:
  port: 9000
  • 测试

依次启动service--provider-1/2/3--consumer

查看服务是否注册成功


负载均衡响应





参考:https://www.w3cschool.cn/spring_cloud/spring_cloud-t2k62ixi.html

附上原作者的源码:https://github.com/souyunku/spring-cloud-examples/tree/master/spring-cloud-feign

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值