springcloud之feign小栗子

写在前面

源码在这里。本例在这篇博客基础上进行讲解。再贴下图,回顾下当前的架构:
在这里插入图片描述
当前有一个端口号为8671的eureka的服务端实例,端口号为8672,8673的eureka客户端相同应用的两个实例,端口号为8674的ribbon的eureka的客户端实例。这里我们再添加一个模块my-service-feign基于feign的方式来调用myeureka-client的服务。

1:创建my-service-feign

1.1:创建项目

new->module,选择Spring Inilializr以及java8,然后next,录入gav等信息,创建完成后如下图:
在这里插入图片描述

1.2:设置parent

<parent>
  <groupId>dongshi.daddy</groupId>
  <artifactId>my-eureka</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>

1.3:引入依赖

<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>

1.4:完整pom

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>dongshi.daddy</groupId>
  <artifactId>my-service-feign</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

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

  <parent>
    <groupId>dongshi.daddy</groupId>
    <artifactId>my-eureka</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <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>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

1.5:配置文件

server:
  port: 8765

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

spring:
  application:
    name: dongshidaddy-first-feign-client

1.6:启用相关注解

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients

这里的@EnableFeignClients是启用feign客户端。
完整代码如下:

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
public class MyServiceFeignApplication {
    
    

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

}

1.7:配置基于feign的service

@FeignClient(value = "DONGSHIDADDY-FIRST-EUREKA-CLIENT")
public interface SchedualServiceHi {
    
    

    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);

}

其中@FeignClient(value = "DONGSHIDADDY-FIRST-EUREKA-CLIENT")是指定调用服务名为DONGSHIDADDY-FIRST-EUREKA-CLIENT提供的服务,这里注意改成自己的。方法sayHiFromClientOne通过rest风格接口的方式配置了调用了接口的Mapping信息。

1.8:配置controller

@RestController
public class HiController {
    
    

    @Autowired
    SchedualServiceHi schedualServiceHi;

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

2:测试

2.1:启动my-enreka-server

该服务是eureka的服务端,作为服务的注册中心使用,端口号是8761

2.2:启动myeureka-client第1个实例

修改配置文件设置端口号为8762,然后启动。

2.3:启动myeureka-client第2个实例

修改端口号为8763。注意不能直接启动,需要在Edit Configurations下添加一个springboot的程序,然后设置名称和主函数,如下图:
在这里插入图片描述
启动成功后,查看http://localhost:8761/可以看到myeureka-client的实例注册了两个,端口号分别为8762,8763
在这里插入图片描述

2.4:启动my-service-feign

启动后可以在eureka服务端看到注册的信息,如下图:
在这里插入图片描述

2.5:访问接口

如下重复访问,可以在myeureka-client的两个实例中进行负载调用:
在这里插入图片描述

3:项目架构

此时系统中有1个eureka的服务端,端口号为8761,3个eureka客户端,分别是myeureka-client,my-service-ribbonmy-service-feign,其中myeureka-client启动2个实例,端口号分别是87628763,my-service-ribbon和my-service-feign调用myeureka-client提供的服务。最终结构如下图:
在这里插入图片描述
其中的蓝色边框框起来的就是本文添加的部分。

最后:都让开,我要喝瑞幸

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wang0907/article/details/109245666