spring cloud Greenwich 学习笔记(二)spring cloud eureka Feign 服务注册与发现

欢迎关注本人公众号

在这里插入图片描述

文章目录

  • 欢迎关注本人公众号
  • 概述
  • 编写feign消费者

springcloud系列学习笔记目录参见博主专栏 spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。文章所有代码都已上传GitHub:https://github.com/liubenlong/springcloudGreenwichDemo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

本文依赖于 上一篇 spring cloud Greenwich 学习笔记(一)spring cloud eureka ribbon 服务注册与发现 中的三个项目。

概述

springcloud提倡微服务采用rest http的方式。消费者在注册中心中发现服务后,需要通过负载均衡进行调度,springcloud全家桶提供了两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。其中feign底层使用了ribbon。本文介绍feign

feign中依赖了ribbonhystrix:
spring cloud Greenwich 学习笔记(二)spring cloud eureka Feign 服务注册与发现_第1张图片

编写feign消费者

引入依赖

<artifactId>springcloud-eureka-serviceconsumer-feignartifactId>
<packaging>jarpackaging>
<name>springcloud-eureka-serviceconsumer-feignname>

<parent>
    <groupId>com.lblgroupId>
    <artifactId>springclouddemoartifactId>
    <version>1.0-SNAPSHOTversion>
parent>

<properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-openfeignartifactId>
    dependency>

    
    <dependency>
        <groupId>javax.xml.bindgroupId>
        <artifactId>jaxb-apiartifactId>
    dependency>
    <dependency>
        <groupId>com.sun.xml.bindgroupId>
        <artifactId>jaxb-implartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>org.glassfish.jaxbgroupId>
        <artifactId>jaxb-runtimeartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>javax.activationgroupId>
        <artifactId>activationartifactId>
        <version>1.1.1version>
    dependency>
    
dependencies>

配置文件中依旧是指定应用名称以及注册中心地址

server:
  port: 8086

# 服务与服务之间相互调用一般都是根据这个name 。
spring:
  application:
    name: springcloud-eureka-serviceconsumer-feign

eureka:
  client:
    serviceUrl:
#      指定服务注册中心的地址
      defaultZone: http://localhost:8080/eureka/

启动类中启动feign服务


@SpringBootApplication
@EnableEurekaClient //启用EurekaClient组件
@EnableFeignClients  //开启Feign的功能
public class Application {

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

使用feign采用这种编写方式:声明一个interface接口,开启Feign负载均衡

/**
 * 通过FeignClient配置负载均衡,指定了服务提供者的名字
 */
@FeignClient(value = "springcloud-eureka-serviceprovider")
public interface HelloService {
    //这里指定调用的rest URL
    @RequestMapping(value = "/", method = RequestMethod.GET)
    String hi(@RequestParam(value = "name") String name);
}

编写controller调用服务

@RestController
public class HelloController {

    @Autowired
    HelloService helloService;

    @RequestMapping("/")
    public String hi(String name){
        //这里直接写的是服务名: springcloud-eureka-serviceprovider  。在ribbon中它会根据服务名来选择具体的服务实例,根据服务实例在请求的时候会用具体的url替换掉服务名
        return helloService.hi(name);
    }
}

像 spring cloud Finchley 学习笔记(一)spring cloud eureka ribbon 服务注册与发现 中介绍的一样,分别依次启动 eureka-server, 两个serviceprovider, serviceconsumer-feign, 浏览器中多次访问http://127.0.0.1:8086/?name=a,输出结果依然是hello a , from port=8082hello a , from port=8083轮询输出。

springcloud系列学习笔记目录参见博主专栏 spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。文章所有代码都已上传GitHub:https://github.com/liubenlong/springcloudGreenwichDemo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

你可能感兴趣的:(spring,cloud,spring,boot,2.X/spring,cloud,Greenwich)