首页
学习
活动
专区
圈层
工具
发布

(二)Spring Cloud分布式之使用Eureka和Feign实现项目间简单的远程调用

(二)Spring Cloud分布式之使用Eureka和Feign实现项目间简单的远程调用(SpringBoot项目)

案例说明

该案例有4个SpringBoot项目,分别为:centerdemo(注册中心)、receptiondemo(消费者)、counselordemo(提供者)、teacherdemo(提供者)。

实现目标:

1. 使用Eureka:消费者和提供者分别注册到注册中心

2. 使用Feign:通过receptiondemo 项目中TestController中的方法,调用counselordemo项目和teacherdemo项目中service包中的对应的方法。

1.创建提供者(teacher),并注册到注册中心

1.1新建project,创建springboot项目

1.2修改Group和Artifact

Group:com.eurekademo

Artifact:teacherdemo

1.3选择依赖

选择Web里面的Spring Web Starter

Spring Cloud Discovery里面的Eureka Server

Spring Cloud Routing里面的OpenFeign

1.4完成创建项目

1.5修改配置文件application.properties

server.port=8003

eureka.client.service-url.defaultZone=http://localhost:8888/eureka/

spring.application.name=teacher

1.6启动类添加注解

启动类中添加注解:

@EnableEurekaServer

//开启远程调用

@ EnableFeignClients

1.7创建TeacherService类

1) 创建service包

2) 创建TeacherService类

3) 添加@RestController注解

4) 编写askTeacher方法

@RequestMapping(value="/askTeacher", method = RequestMethod.POST) public String askTeacher(){ return "xxx学习很不好!"; }

2.修改之前创建的receptiondemo项目和counselordemo项目

之前项目网址

创建receptiondemo项目和counselordemo项目的过程详见下面网址:

https://cloud.tencent.com/developer/article/1449744

2.1修改counselordemo项目

2.1.1在pom文件中添加feign的依赖

代码语言:javascript
复制
<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

2.1.2启动类添加注解

启动类中增加注解,用来开启远程调用

@ EnableFeignClients

2.1.3创建CounselorService类

1) 创建service包

2) 创建CounselorService类

3) 添加@RestController注解

4) 编写askCounselor方法

代码语言:javascript
复制
@RequestMapping(value = "/askCounselor", method = RequestMethod.POST)

public String askCounselor(){

    return "xxx打架住院了!";

}

2.2修改receptiondemo项目

2.2.1在pom文件中添加feign的依赖

代码语言:javascript
复制
<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

2.2.2启动类添加注解

启动类中增加注解,用来开启远程调用

@ EnableFeignClients

2.2.3创建TeacherService接口

1) 创建service包

2) 创建TeacherService接口

3) 添加@FeignClient注解,name的值为注册中心显示的名称。通过该注解指定调用注册中心的哪个项目。

代码语言:javascript
复制
@FeignClient(name = "TEACHER")

4) 给接口添加方法和@RequestMapping注解。

注意:接口方法和@RequestMapping注解的内容要和对应项目中的实现类的方法和注解一样。

代码语言:javascript
复制
@RequestMapping(value="/askTeacher", method = RequestMethod.POST)

public String askTeacher();

2.2.4创建CounselorService接口

1) 创建service包

2) 创建CounselorService接口

3) 添加@FeignClient注解,name的值为注册中心显示的名称。通过该注解指定调用注册中心的哪个项目。

代码语言:javascript
复制
@FeignClient(name = "COUNSELOR")

4) 给接口添加方法和@RequestMapping注解。

注意:接口方法和@RequestMapping注解的内容要和对应项目中的实现类的方法和注解一样。

代码语言:javascript
复制
@RequestMapping(value="/askCounselor", method = RequestMethod.POST)

public String askCounselor();

2.2.5创建TestController类

类中代码如下:

代码语言:javascript
复制
@Controller

public class TestController {

    @Resource

    private TeacherService teacherService;



    @Resource

    private CounselorService counselorService;



    @RequestMapping("/askTeacher")

    @ResponseBody

    public String askTeacher(){

        String result = teacherService.askTeacher();

        return "Teacher的回复是:"+result;

    }



    @RequestMapping("/askCounselor")

    @ResponseBody

    public String askCounselor(){

        String result = counselorService.askCounselor();

        return "Counselor的回复是:"+result;

    }



    @RequestMapping("/askSelf")

    @ResponseBody

    public String askSelf(){

        return "这是我自己的回复";

    }

}

3.启动4个项目

3.1访问下图所示地址,成功后如下图所示。

3.2访问下图地址,调用TestController中的askSelf方法。

3.3访问下图地址,调用TestController中的askTeacher方法。实现远程调用teacherdemo项目中TeacherService的askTeacher方法。

3.4访问下图地址,调用TestController中的askCounselor方法。实现远程调用counselordemo项目中CounselorService的askCounselor方法。

至此,远程调用案例结束。

下一篇
举报
领券