`

SpringCloud分布式微服务云架构 第三篇: 服务消费者(Feign)(Finchley版本)

阅读更多

上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。

 

一、Feign简介

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,了解springcloud架构可以加求求:三五三六二四七二五九,并和Eureka结合,默认实现了负载均衡的效果。

 

简而言之:

 

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

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

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

二、准备工作

继续用上一节的工程, 启动eureka-server,端口为8761; 启动service-hi 两次,端口分别为8762 、8773.

 

三、创建一个feign的服务

新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-netflix-eureka-client、Web的起步依赖spring-boot-starter-web,代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.forezp</groupId>
    <artifactId>service-feign</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>service-feign</name>
    <description>Demo project for Spring Boot</description>


    <parent>
        <groupId>com.forezp</groupId>
        <artifactId>sc-f-chapter3</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
    
    </project>

 在工程的配置文件application.yml文件,指定程序名为service-feign,端口号为8765,服务注册地址为http://localhost:8761/eureka/ ,代码如下:

写道
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8765
spring:
application:
name: service-feign


 在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能:

写道
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {

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




 在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能:

写道
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {

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




 定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务。比如在代码中调用了service-hi服务的“/hi”接口,代码如下:

写道

@FeignClient(value = "service-hi")
public interface SchedualServiceHi {
@RequestMapping(value = "/hi",method = RequestMethod.GET)
String sayHiFromClientOne(@RequestParam(value = "name") String name);
}





 在Web层的controller层,对外暴露一个"/hi"的API接口,通过上面定义的Feign客户端SchedualServiceHi 来消费服务。代码如下:

写道
@RestController
public class HiController {


//编译器报错,无视。 因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。
@Autowired
SchedualServiceHi schedualServiceHi;

@GetMapping(value = "/hi")
public String sayHi(@RequestParam String name) {
return schedualServiceHi.sayHiFromClientOne( name );
}
}



 启动程序,多次访问http://localhost:8765/hi?name=forezp,浏览器交替显示:

hi forezp,i am from port:8762
hi forezp,i am from port:8763

分享到:
评论

相关推荐

    springcloud 分布式框架搭建

    SpringCloud 是一个基于 Java 的微服务开发框架,用于简化分布式系统构建的一系列工具集合。它提供了包括服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群...

    基于SpringCloud分布式微服务+微信小程序实现短视频社交app设计源码.zip

    本文将深入探讨如何利用SpringCloud分布式微服务架构和微信小程序技术,构建一个高效、稳定且用户友好的短视频社交平台。我们将围绕核心的技术组件,如Eureka、Zuul、Hystrix、Config Server以及微信小程序API,进行...

    基于Spring Cloud(Finchley版本)架构体系

    Spring Cloud Finchley是Spring Cloud的一个重要版本,它提供了一套微服务开发的工具集,用于构建分布式系统,如服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...

    SpringCloud分布式开发基础工程

    SpringCloud是基于Spring Boot实现的一套微服务框架,它提供了在分布式系统中常见的诸多功能,如服务发现、负载均衡、断路器、配置中心等。本项目“SpringCloud分布式开发基础工程”旨在帮助开发者理解并掌握Spring...

    springcloud feign 服务消费者 类似 webservice

    总之,Spring Cloud Feign为微服务架构中的服务消费者提供了优雅的调用方式,降低了开发复杂性,提高了代码的可读性和可维护性。通过合理的配置和使用,我们可以构建出高可用、高并发的分布式系统。

    Ideal版SpringCloud框架参考---分布式微服务架构参考

    本文将深入探讨标题" Ideal版SpringCloud框架参考---分布式微服务架构参考"所涵盖的关键知识点,并结合描述中的组件进行详细解析。 首先,Eureka是Spring Cloud中的服务注册与发现组件。它允许微服务实例向中心...

    springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

    在本教程中,我们将深入探讨如何使用Spring Cloud的2021.0.3版本,集成Nacos作为服务注册中心,并实现Feign客户端调用。Spring Cloud是一个强大的框架,用于构建分布式系统,如微服务架构,而Nacos是阿里巴巴开源的...

    spring-cloud 微服务系统架构 ppt

    通过以上介绍,我们可以看出Spring Cloud为构建微服务架构提供了丰富的工具和组件,它简化了开发过程,同时也带来了复杂性的挑战。开发者需要理解每个组件的工作原理,并根据实际需求进行选型和配置,以实现高效、...

    SpringCloudLearning_forezp.tar.gz

    史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本) 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本) 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)...

    SpringBlade 分布式微服务架构 v3.7.0.zip

    SpringBlade是一个全面的、基于Spring Boot和Spring Cloud的分布式微服务架构,旨在提供一个高效、易用、功能丰富的开发平台。在这个v3.7.0版本中,它集成了许多现代开发工具和技术,帮助开发者快速构建复杂的企业级...

    基于Spring Cloud和Docker的分布式微服务架构设计.pdf

    总结来说,基于SpringCloud和Docker的分布式微服务架构设计,不仅解决了传统单体架构的局限性,还通过微服务的高度解耦和容器化部署,极大提升了应用的灵活性和可维护性。这套架构设计为当前和未来应用架构的发展...

    SpringCloud微服务分布式架构开发实战-50000-05-作业及参考答案.rar.rar

    在本课程"SpringCloud微服务分布式架构开发实战-50000-05-作业及参考答案"中,我们将深入探讨SpringCloud这一强大的微服务框架,并通过具体的作业与参考答案来加深理解。SpringCloud是Java领域中广泛使用的微服务...

    分布式微服务例子:SpringBoot2.X+SpringCloud+SpringDataJPA+Consul+Feign+Swagger

    分布式微服务架构是一种现代软件开发方法,它将大型应用程序拆分为小型、独立的服务,每个服务都可以独立部署和扩展。在这个例子中,我们看到一个基于Spring Boot 2.x、Spring Cloud、Spring Data JPA、Consul、...

    springCloud项目练习

    第三课: 服务消费者(Feign) 第四课: 断路器(Hystrix) 第五课: 路由网关(zuul) 第六课: 分布式配置中心(Spring Cloud Config) 第七课: 高可用的分布式配置中心(Spring Cloud Config) 第八课: 消息总线...

    (代码)SpringCloud第07讲:Http模板化客户端Feign

    Feign的设计灵感来源于Netflix,其核心功能是作为服务消费者之间的代理,提供了一种接口化的调用方式,让服务调用如同调用本地方法一样简单。 在Spring Cloud体系中,微服务间的通信通常有多种方式,如Ribbon和...

    spring boot+Spring cloud微服务分布式源码.zip

    在现代软件开发中,Spring Boot 和 Spring Cloud 的组合已经成为构建微服务架构的首选方案。本文将深入探讨这两个框架的集成应用,以及它们如何帮助开发者实现高效、可扩展的分布式系统。 Spring Boot 是一个基于 ...

    SpringCloud分布式系统开发.docx

    - **开发流程**:在开发过程中,可以通过 SpringCloud 的各种子项目来快速搭建分布式系统的基本框架,如使用 Spring Cloud Config 进行配置管理,利用 Spring Cloud Netflix 实现服务间的调用和容错处理。...

    SpringCloud-创建服务消费者-Feign方式示例代码.zip

    通过学习和实践这个示例,你将深入理解Spring Cloud Feign的工作原理和使用方式,为构建微服务架构中的服务消费者打下坚实的基础。同时,也可以了解到如何与其他Spring Cloud组件(如Eureka)协同工作,提高系统的可...

    springcloud-alibaba服务注册发现整合feign:webflux调用

    在微服务架构中,Spring Cloud Alibaba 是一个强大的工具集,它提供了多种服务治理功能,如服务注册与发现、配置中心、熔断器等。本文将深入探讨如何在 Spring Cloud Alibaba 环境下,整合 Feign 实现服务间的 ...

    基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统

    在构建基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统时,开发者通常会采用一系列先进的技术来实现高效、可扩展且灵活的系统。这个系统不仅涉及到后端服务的开发,还涉及到前端用户界面的...

Global site tag (gtag.js) - Google Analytics