Spring Cloud 学习笔记08----服务消费者(Feign)(Finchley版本)

简介: 接上一篇《Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)》,今天我们来学习另外一种服务调用方式(Feign),之前我们介绍了 RestTemplate+Ribbon 消费服务的方式。

概要

接上一篇《Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)》,今天我们来学习另外一种服务调用方式(Feign),之前我们介绍了 RestTemplate+Ribbon 消费服务的方式。


Feign简介

Feign 是一个声明式的伪Http客户端,它使得写Http 客户端变得更简单,使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign注解和JAX-RS注解,Feign 也支持可插拔的编码器和解码器,Spring Cloud 扩展了对Spring MVC的注解支持,在Spring Web 中同样使用HttpMessageConverters 。Feign 默认集成了Ribbon, 并和Eureka 结合,默认实现了负载均衡的效果。

简单来说:


Feign 采用的是基于接口的注解

Feign 整合了Ribbon, 具有负载均衡的能力

整合了Hystrix,具有熔断能力。

快速入门

首先,沿用前面的服务注册中心(eureka-server)以及服务提供者(order-provider)。然后新建一个SpringBoot 项目,命名为service-feign。添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
  <!--必须添加spring-boot-starter-web,否则注册失败-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

然后,在application.yml 加上如下配置,指定端口为8765,服务名为service-feign:

spring:
  application:
    name: service-feign
eureka:
  client:
    service-url:
#    用于指定注册中心的地址
      defaultZone: http://localhost:1111/eureka/
server:
  port: 8765

接着,我们在ServiceFeignApplication 中添加@EnableFeignClients以激活Feign。添加@EnableEurekaClient 以开启负载均衡,使其可以注册到Eureka 中。

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class ServiceFeignApplication {
  public static void main(String[] args) {
  SpringApplication.run(ServiceFeignApplication.class, args);
  }
}

接着,我们新建一个接口,用于调用服务提供者提供的服务,使用

@FeignClient(serviceId = "order-service") 指定调用的服务名为order-service。
@FeignClient(serviceId = "order-service")
public interface HelloService {
    @GetMapping(value = "/dc")
    String getOrderService(@RequestParam("name") String name);
}

最后,我们新建一个controller 调用刚刚新建接口HelloService中的方法,测试下是否可以调用成功

@RestController
public class HelloController {
    @Autowired
    private HelloService helloService;
    @GetMapping("/dc")
    public String getOrderService(String name) {
        return helloService.getOrderService(name);
    }
}

测试结果,我们启动两个order-provider 服务,端口号分别为 8082,8083,

然后,启动 service-feign, 端口号为:8765,

在Eureka面板中查看

bfd00078d06634b99838ecb8b4a71e63_20190214223211549.png

访问http://localhost:8765/dc?name=jay会交替出现如下结果:

hi: jay;port=8083
hi: jay;port=8082

参考代码

https://github.com/XWxiaowei/SpringCloud-Learning/tree/master/2-Finchley版教程示例/Chapter6-1


参考文献

http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html#netflix-feign-starter

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


相关文章
|
3月前
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
178 1
|
1月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
36 6
|
1月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
58 5
|
1月前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
43 5
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
71 3
|
4月前
|
Java API 对象存储
微服务魔法启动!Spring Cloud与Netflix OSS联手,零基础也能创造服务奇迹!
这段内容介绍了如何使用Spring Cloud和Netflix OSS构建微服务架构。首先,基于Spring Boot创建项目并添加Spring Cloud依赖项。接着配置Eureka服务器实现服务发现,然后创建REST控制器作为API入口。为提高服务稳定性,利用Hystrix实现断路器模式。最后,在启动类中启用Eureka客户端功能。此外,还可集成其他Netflix OSS组件以增强系统功能。通过这些步骤,开发者可以更高效地构建稳定且可扩展的微服务系统。
72 1
|
Dubbo Java 应用服务中间件
深入了解Spring Cloud Alibaba Dubbo
在现代分布式系统开发中,构建高性能、可伸缩性和弹性的微服务架构变得越来越重要。Spring Cloud Alibaba Dubbo(简称Dubbo)是一个开源的分布式服务框架,可以帮助开发者构建强大的微服务架构,具备负载均衡、服务治理、远程调用等强大功能。本文将深入介绍Spring Cloud Alibaba Dubbo,帮助你理解它的核心概念、工作原理以及如何在你的项目中使用它。
|
Kubernetes Java 微服务
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
155 0
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
|
8月前
|
Java 中间件 开发者
Spring Cloud Alibaba
【1月更文挑战第27天】【1月更文挑战第127篇】Spring Cloud Alibaba
148 1
|
7月前
|
消息中间件 Java 持续交付
Spring Cloud Alibaba 项目搭建步骤和注意事项
Spring Cloud Alibaba 项目搭建步骤和注意事项
873 0
Spring Cloud Alibaba 项目搭建步骤和注意事项

热门文章

最新文章