`

SpringCloudb2b2c电子商务- 服务消费者(Feign)

阅读更多

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。

它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成

了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

 

简而言之:

 

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

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

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

二、准备工作

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

了解springcloud架构可以加求求:三五三六二四七二五九

三、创建一个feign的服务

新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、

Eureka的起步依赖spring-cloud-starter-netflix-eureka-client、Web的起步依赖spring-boot-starter-web,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<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/ ,代码如下:

1
2
3
4
5
6
7
8
9
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8765
spring:
  application:
    name: service-feign

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

1
2
3
4
5
6
7
8
9
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run( ServiceFeignApplication.class, args );
    }
}

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

1
2
3
4
5
@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 来消费服务。代码如下:

1
2
3
4
5
6
7
8
9
10
@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

分享到:
评论

相关推荐

    feign-form-spring-3.8.0-API文档-中文版.zip

    赠送jar包:feign-form-spring-3.8.0.jar; 赠送原API文档:feign-form-spring-3.8.0-javadoc.jar; 赠送源代码:feign-form-spring-3.8.0-sources.jar; 赠送Maven依赖信息文件:feign-form-spring-3.8.0.pom; ...

    Spring Cloud 服务注册中心-服务提供-服务消费-源码-可运行

    Spring Cloud 服务注册中心-...1-SpringCloudDemo-ServiceConsumers-Feign(服务消费者-feign) 1-SpringCloudDemo-ServiceConsumers-Ribbon(服务消费者-ribbon) 1-SpringCloudDemo-ServiceConsumers(服务消费者-基础)

    feign-form-3.8.0-API文档-中文版.zip

    赠送jar包:feign-form-3.8.0.jar; 赠送原API文档:feign-form-3.8.0-javadoc.jar; 赠送源代码:feign-form-3.8.0-sources.jar; 赠送Maven依赖信息文件:feign-form-3.8.0.pom; 包含翻译后的API文档:feign-form...

    spring-cloud-user-feign.zip

    在本项目"spring-cloud-user-feign.zip"中,我们探讨的是如何在Spring Cloud框架下实现服务间的调用,特别是利用Feign客户端进行微服务通信。这个压缩包包含了四个关键组件,分别是: 1. spring-cloud-gateways:这...

    feign以XML格式传输-技术点eureka-feign-jackson.zip

    在本项目中,Eureka被用来创建一个注册中心(eureka-service),服务提供者(eureka-demo)会注册到这个中心,同时存在一个服务消费者(feign-client)使用Feign来调用服务提供者。Feign客户端通过声明式的方式定义...

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

    在这个名为"SpringCloud-创建服务消费者-Feign方式示例代码.zip"的压缩包中,我们预计将看到一个简单的Spring Cloud应用,该应用展示了如何利用Feign作为服务消费者来调用其他服务。 首先,让我们了解Feign的基本...

    feign-core-11.8-API文档-中文版.zip

    赠送jar包:feign-core-11.8.jar; 赠送原API文档:feign-core-11.8-javadoc.jar; 赠送源代码:feign-core-11.8-sources.jar; 赠送Maven依赖信息文件:feign-core-11.8.pom; 包含翻译后的API文档:feign-core-...

    feign-core-10.12-API文档-中文版.zip

    赠送jar包:feign-core-10.12.jar; 赠送原API文档:feign-core-10.12-javadoc.jar; 赠送源代码:feign-core-10.12-sources.jar; 赠送Maven依赖信息文件:feign-core-10.12.pom; 包含翻译后的API文档:feign-core...

    feign-gson-9.5.1

    feign-gson-9.5.1feign-gson-9.5.1 feign-gson-9.5.1feign-gson-9.5.1feign-gson-9.5.1

    srping-cloud-alibaba-nacos-feign.zip

    而`spring-cloud-alibaba-demo-user`则为服务消费者,通过Feign接口调用`spring-cloud-alibaba-nacos`中的服务。 在实际开发中,我们还需要注意以下几点: 1. 服务消费者通过Nacos获取服务提供者的元数据,包括服务...

    spring-cloud-hystrix-feign(注册中心、member、feign-order).zip

    然后,"SpringCloud-2.0-order-hystrix-feign-8012"展示了如何使用Feign和Hystrix进行服务间调用。Feign是一个声明式Web服务客户端,使得编写Web服务客户端就像编写Java接口一样简单。在Order服务中,我们可以定义一...

    eureka 客户端-服务消费者

    在这个"eureka 客户端-服务消费者"的示例中,我们将深入探讨如何使用 Spring Boot 和 Spring Cloud 的最新版本来实现基于 Feign 的服务消费者。 1. **Eureka 服务注册与发现** Eureka 是 Netflix 开源的一个基于 ...

    srping-cloud-alibaba-nacos-feign-sentinel.zip

    本示例以"spring-cloud-alibaba-nacos-feign-sentinel.zip"为核心,旨在展示如何将Nacos用于服务注册与发现,Feign实现服务间的无侵入调用,以及Sentinel作为流控防护屏障,构建一个高效且稳定的微服务体系。...

    SpringCloud-2.0-order-Feign-8005.zip

    在本项目"SpringCloud-2.0-order-Feign-8005.zip"中,主要探讨了如何在Spring Cloud 2.0环境下利用Feign客户端实现服务间的调用,并达到与`@LoadBalanced`注解类似的效果,即负载均衡。Spring Cloud是基于Spring ...

    Finn之 SpringCloud2.0教程全集(四)- 服务消费者(Feign + ribbon)

    Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级...Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。

    istio-fake:高仿feign,支持istio中服务调用,支持异步链路追踪

    项目介绍本项目仿照Feign,旨在istio体系中,快速完成服务间调用,并保持链路追踪。去除了Feign中所有熔断,负载均衡策略,全部由istio控制。demodemo说明servicea提供client,serviceb依赖servicea的client并开启...

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

    本示例代码着重讲解如何利用Ribbon创建服务消费者,结合Eureka实现服务发现。Eureka是Netflix开源的服务注册与发现工具,它使得微服务之间能够互相找到并进行通信。 首先,我们需要理解Spring Cloud Eureka的工作...

    feign-core-11.8-API文档-中英对照版.zip

    赠送jar包:feign-core-11.8.jar; 赠送原API文档:feign-core-11.8-javadoc.jar; 赠送源代码:feign-core-11.8-sources.jar; 赠送Maven依赖信息文件:feign-core-11.8.pom; 包含翻译后的API文档:feign-core-...

    venus-cloud-feign-1.5.x.rar_cloud_feign_formery87_spring

    2. 在服务消费者中注入并调用接口: ```java @Service public class ConsumerService { @Autowired private ServiceProviderClient serviceProviderClient; public String callProvider(String name) { return ...

    springcloud feign 服务消费者 类似 webservice

    Feign的设计灵感来源于Netflix的Feign库,它的主要目的是简化微服务之间的通信,使得开发者可以像定义接口一样调用远程服务,从而降低了服务消费者与提供者的耦合度。 在传统的Web Service(WebService)中,我们...

Global site tag (gtag.js) - Google Analytics