前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(二)Spring Cloud分布式之使用Eureka和Feign实现项目间简单的远程调用

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

原创
作者头像
John的留学视界和技术视野
修改2019-06-24 10:12:34
2.5K0
修改2019-06-24 10:12:34
举报
文章被收录于专栏:程序视野程序视野

(二)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方法。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (二)Spring Cloud分布式之使用Eureka和Feign实现项目间简单的远程调用(SpringBoot项目)
  • 案例说明
  • 1.创建提供者(teacher),并注册到注册中心
    • 1.1新建project,创建springboot项目
      • 1.2修改Group和Artifact
        • 1.3选择依赖
          • 1.4完成创建项目
            • 1.5修改配置文件application.properties
              • 1.6启动类添加注解
                • 1.7创建TeacherService类
                • 2.修改之前创建的receptiondemo项目和counselordemo项目
                  • 之前项目网址
                    • 2.1修改counselordemo项目
                      • 2.1.1在pom文件中添加feign的依赖
                      • 2.1.2启动类添加注解
                      • 2.1.3创建CounselorService类
                    • 2.2修改receptiondemo项目
                      • 2.2.1在pom文件中添加feign的依赖
                      • 2.2.2启动类添加注解
                      • 2.2.3创建TeacherService接口
                      • 2.2.4创建CounselorService接口
                      • 2.2.5创建TestController类
                  • 3.启动4个项目
                    • 3.1访问下图所示地址,成功后如下图所示。
                      • 3.2访问下图地址,调用TestController中的askSelf方法。
                        • 3.3访问下图地址,调用TestController中的askTeacher方法。实现远程调用teacherdemo项目中TeacherService的askTeacher方法。
                          • 3.4访问下图地址,调用TestController中的askCounselor方法。实现远程调用counselordemo项目中CounselorService的askCounselor方法。
                          • 至此,远程调用案例结束。
                          相关产品与服务
                          微服务引擎 TSE
                          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档