今天闲来无事,在网上找了几篇关于Eureka的文章,发现其功能很强大而且搭建非常简单。由于笔者也是刚接触,所以就不在此过多叙述其特点和原理(ps:其实是自己也不懂- -!)。相关原理可参考这里--  

    笔者使用的工具及版本信息如下:

     eclipse--4.9.0

springboot解决两个service互相依赖_spring-could

spring-boot--2.1.0

springboot解决两个service互相依赖_spring-could_02

接下来进入项目搭建:

1.创建Eureka注册中心

eclipse左侧项目空白区域右键new>>>other>>>选择spring-boot项目Spring Starter Project

springboot解决两个service互相依赖_spring-boot_03

点击Next,进入创建项目信息页面

springboot解决两个service互相依赖_spring-boot_04

再次点击next,进入选择jar包信息(注意这里一定要选 Eureka的包,如果不选后期也可以在pom.xml里面加,但是会很麻烦。我第一次就是没弄好后来又把项目删了重新创建的 - -!),点击展开Cloud Discovery>>>选中Eureka Server然后Finish

springboot解决两个service互相依赖_spring-could_05

等待项目创建成功,打开pom.xml文件查看是否有Eureka和Cloud的信息

springboot解决两个service互相依赖_spring-could_06

2.接下来编写application.yml配置文件 如下图

springboot解决两个service互相依赖_服务端_07

上图中     1为项目启动的端口,由于需要测试各服务间的调用要用到三个项目所以注意端口的区分,不要冲突。

                2.为是否为Eureka的服务端(这是我自己理解的),设置为false就是说不是服务端而是主服务也就是注册中心

                3.为Eureka的注册地址,这个就好理解了。

3.接下来需要在springboot的启动类加个注解@EnableEurekaServer,表明是Eureka的服务

springboot解决两个service互相依赖_spring-could_08

好了,到目前为止注册中心已创建好了,可以启动项目试着访问下,看是否像下图一样

springboot解决两个service互相依赖_spring-boot_09

如果是这样那么恭喜你,完美的完成了第一大步,接下来就简单多了。

4.重复第一步,创建一个服务端项目

5.编写application.yml配置文件

springboot解决两个service互相依赖_spring-could_10

上图中:1不在多说,

       2.为本项目注册到注册中心的别名(注意,注意,注意:很重要说三遍,中间不要用下划线,笔者就是一开始用的下划线导致最后服务间怎么都调用不成功!!!!!)

       3.这个好理解就是上一个注册中心项目的地址和端口(是注册中心的端口),记得后面要加上eureka

6.也需要在项目的启动类加上注解@EnableEurekaClient,这里也要注意和注册中心启动类的注解不一样!!!

springboot解决两个service互相依赖_配置文件_11

7.接下来编写一个提供服务的简单测试接口,很简单请看下图

springboot解决两个service互相依赖_服务端_12

好了,可以把这个项目启动了,启动后把刚才注册中心的页面刷新下看看有没有成功注册进去,见下图

springboot解决两个service互相依赖_spring-boot_13

至于我上边框住的红色字母,不用理会,这是eureka的自我保护模式,因为注册中心和每个服务端都有一个心跳状态,由每个服务间隔一段时间发送给注册中心告诉注册中心自己还活着,如果到一定的时间未发送,注册中心就会销毁这个服务,而上图应该是因为我们是先打开注册中心后隔了好长时间才启动服务(就是刚刚创建的时候用了很长时间),以后再接连打开的时候就不会有这个提示了。

8.接着再创建一个调用服务的项目,还是重复第一步。

9.还是编写项目的application.yml配置文件,见下图

springboot解决两个service互相依赖_eureka_14

上图中:1,2,3咱们上边都说过了,我就不再多说了,主要说下第四个

         4.这是这个项目中需要调用某个服务的地址(这里咱们调用上一个服务所以写的是上一个服务在注册中心的地址),不理解的同学们看一下第七步中咱们启动成功后,刷新的注册中心页面就明白了。

10.创建一个调用服务的service类,见下图

springboot解决两个service互相依赖_服务端_15

上图中:

      1.为调用服务的地址,咱们是写在application.yml的配置文件里的,不清楚的同学可以去第十步去看一下

      2.为spring中请求调用的一个模版,这里不做详细解释了,想了解的同学可以点这里查看

      3.为调用服务的地址和参数拼接,一看就知道就不做解释了

11,创建一个测试的controller,见下图

springboot解决两个service互相依赖_eureka_16

上图中:

    1.为注入刚才编写调用服务的service类

    2.调用方法,不多说了。

12.在项目的启动类里边加上如下注解,见下图

springboot解决两个service互相依赖_spring-boot_17

上图中:

    1.为标明该项目为服务端的注解

    2.为开启负载均衡,就是能让这个RestTemplate在请求时拥有客户端负载均衡的能力,想详细了解的同学点进入查看源码即可

13,好了,到这里已经进入尾声了,马上就是验证你的成果是否值得的时刻,千万不要眨眼哈。

       启动这个项目,在刷新eureka注册中心的页面,看是不是和下图一样,两个服务都安静的躺在那里,如果是那么恭喜你成功了,如果不是也不要着急,顺着上边的步骤找一下,肯定是那里出现问题了,我在第一次弄的时候也是没成功,后来发现是配置文件和调用服务的service里面服务的地址拼错了少了“/”这个。详细检查一下肯定会成功的。

springboot解决两个service互相依赖_eureka_18

14,下边咱们测试一下服务间的调用情况,看看是不是可以成功调用了。看下图

springboot解决两个service互相依赖_服务端_19

好了,出现上图说明各服务间可以成功调用了。注意,注意,注意,地址栏里的端口别弄错了,应该是最后一个项目的端口,至于参数值就看你怎么喜欢了,反正是爱咋传咋传。

到此,完全搭建成功。  慢慢来难受的路还长- -!~~~