SpringCloud使用Ribbon组件完成跨服务通讯

2019-07-16  本文已影响0人  沐文乘光

Demo源码请从下面链接获取:

https://github.com/pengpengeveryday/SpringCloudDemo

创建cloud-base模块

从maven中新建一个工程,取名RibbonDemo。其中的module name写为cloud-base。(为什么用maven而不用spring intiate 向导?这样粒度更细,向导其实也是对等于maven的操作。试了后就能体会得到,不再缀叙)。按照如下操作来:

File->New->Project。弹出New Project对话框。在其中选中maven,直接点选Next。

在接下来的对话框中填写下面内容,然后下一步。

再接下来的对话框中填写如下内容,然后点击finish。

最后intelij上展示如下图所示,pom.xml什么都没有。

pom.xml of cloud-base

cloud-base增加Spring cloud相关依赖项目,pom.xml内容如下。这样cloud-base就算是弄好了。

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>peng.cloud</groupId>

<artifactId>cloud-base</artifactId>

<version>1.0-SNAPSHOT</version>

<properties>

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

<spring-cloud.version>Greenwich.SR2</spring-cloud.version>

</properties>

<dependencies>

<dependency>

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

<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

</dependency>

<dependency>

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

<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

</dependency>

<dependency>

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

<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<dependencyManagement>

<dependencies>

<dependency>

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

<artifactId>spring-cloud-dependencies</artifactId>

<version>${spring-cloud.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

新建cloud-eureka模块,作为服务注册中心

跟先前构建cloud-base模块类似,构建出cloud-eureka模块。构建好后,在pom.xml添加如下代码即引入了要用到的spring cloud的依赖。

<parent>

<groupId>peng.cloud</groupId>

<artifactId>cloud-base</artifactId>

<version>1.0-SNAPSHOT</version>

<relativePath>../cloud-base</relativePath>

</parent>

pom.xml的所有内容如下,粗体是新加的:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>peng.cloud</groupId>

<artifactId>cloud-base</artifactId>

<version>1.0-SNAPSHOT</version>

<relativePath>../cloud-base</relativePath>

</parent>

<groupId>peng.cloud</groupId>

<artifactId>cloud-eureka</artifactId>

<version>1.0-SNAPSHOT</version>

</project>

入口java文件内容如下截图所示

java application entry file

在resource目录下的application.yml文件的内容如下:

application.yml

到这一步,cloud-eureka就可以正常起来了。它用来完成服务的发现和关联相关事情。后面我们就能体会到它的用处。

构建cloud-shopping服务

这个服务是购物的服务,构建的步骤方式跟cloud-eureka类似。

java文件如下:

app

application.yml文件如下:

application.yml

可以看到,这个服务会挂到8802端口。

构建cloud-express服务

这个服务是快递服务。就是购物之后,会将物品快递出来。

方法和文件内容都差不多,都略过不截图了。

案例逻辑关系说明

这里有两个服务,cloud-shopping负责购物处理,cloud-express负责快递处理。就是购物完了之后,会将物品快递到客户家去。因此,

cloud-shopping

cloud-shopping模块,有一个controller来响应客户的服务请求,实现截图如下:

ShoppingController.java

响应buy请求。

ShoppingService的实现截图如下:

ShoppingService.java

@Service的注解意味着可以用系统AutoWired方式来自动创建出来,而不用new。 ShoppingService会调用cloud-service的服务来获取一个快递地址。(case不太合理,不过大家知道我的意思就行,就是了解服务之间的交互方法)

cloud-express

cloud-express也是有两个类。一个controller,一个service。因为都简单,直接上图,不再左说明。

ExpressController.java ExpressService.java

所有的代码都介绍完毕了。下图是工程的模块摆放截图:

下面就启动下面图中的三个服务来看看效果吧。

三个module对应三个配置启动项目

先启动EruekaApplication,再启动后面两个。

运行效果图如下:

浏览器访问截图

用postman访问的结果展示

postman访问截图
上一篇下一篇

猜你喜欢

热点阅读