搭建SpringCloud-Eureka 注册中心以及服务提供与调用 快速了解 SpringCloud-Eureka 搭建SpringCloud-Eureka 注册中心以及服务提供与调用

原文地址:  搭建SpringCloud-Eureka 注册中心以及服务提供与调用

 

纸上得来终觉浅,绝知此事要躬行啊~果真看着很easy,本身搞起来就是各类坑~各位看官,容我慢慢道来~html

关于springcloud是什么我就不废话了~java

 

Eureka spring

Eureka(原来觉得是缩写,原来就是一个单词,翻译为:我发现了,我找到了!0.0)是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。api

这个东西通俗的理解就像是一个淘宝,你是卖家也好,仍是买家也好,你要交易,你得在我这先注册一个帐号。浏览器

1,先新建一个maven工程app

2,在pom文件中引入相关jar包maven

学习大佬的教程,结果用大佬的demo直接报错,启动程序一直提示:spring-boot

Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.core.DefaultResourceConfigpost

郁闷,查看spring-cloud-starter-eureka-server   jar包学习

发现其中引入的jersey的jar是1.19.1,而后本身研究,发现1.19可使用,遂在pom文件中引入,按照个人理解1.19.1确定比1.19版本高的,怎么反而不行了?

再启动,而后这个错误是消失了,结果后面又报错,又出来一个servo 包下的类找不到,mmp~又是版本问题,再引入 servo包,ok了~

最终造成以下的pom配置文件

复制代码
 1 <parent>
 2        <groupId>org.springframework.boot</groupId>
 3        <artifactId>spring-boot-starter-parent</artifactId>
 4        <version>1.5.8.RELEASE</version>
 5    </parent>
 6    
 7    <dependencies>
 8     <dependency>
 9         <groupId>org.springframework.cloud</groupId>
10         <artifactId>spring-cloud-starter</artifactId>
11     </dependency>
12     <dependency>
13         <groupId>com.sun.jersey</groupId>
14            <artifactId>jersey-bundle</artifactId>
15              <version>1.19</version>
16          </dependency>
17 
18         <dependency>
19             <groupId>com.netflix.servo</groupId>
20             <artifactId>servo-core</artifactId>
21             <version>0.12.7</version>
22         </dependency>
23        <dependency>
24         <groupId>org.springframework.cloud</groupId>
25         <artifactId>spring-cloud-starter-eureka-server</artifactId>
26         </dependency>
27    </dependencies>
28    <dependencyManagement>
29     <dependencies>
30       <dependency>
31         <groupId>org.springframework.cloud</groupId>
32         <artifactId>spring-cloud-dependencies</artifactId>
33         <version>Dalston.RC1</version>
34         <type>pom</type>
35         <scope>import</scope>
36       </dependency>
37     </dependencies>
38   </dependencyManagement>
39    <repositories>
40     <repository>
41       <id>spring-milestones</id>
42       <name>Spring Milestones</name>
43       <url>https://repo.spring.io/milestone</url>
44       <snapshots>
45         <enabled>false</enabled>
46       </snapshots>
47     </repository>
48   </repositories>
复制代码

3,编写启动类代码

复制代码
1 @SpringBootApplication
2 @EnableEurekaServer
3 public class App {
4 
5     public static void main(String[] args) {
6         SpringApplication.run(App.class, args);
7     }
8 }
复制代码

注意添加EnableEurekaServer注解

4,添加配置文件

对于这个配置文件的添加有2种格式,一种是application.properties 另一种是 application.yaml。对于2种格式的区别,咱们不作比较。可是对于这个文件的位置,我仍是纳闷了一会,最后通过尝试,如图所示位置

 

 而且须要注意文件名称一个字母都不能少0.0,我就是因为没注意少写个字母,也报错了。。。。

application.properties 格式,文件内容以下:

1 spring.application.name=spring-cloud-eureka
2 server.port=8000
3 eureka.client.register-with-eureka=false
4 eureka.client.fetch-registry=false
5 eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

注意第3 行默认是true也就是若是你不加上这个false,启动就会报错,由于他会想把本身注册到本身上面!!!第4行默认也是true,意思是他要不要获取注册到服务中心的信息 

5,启动注册中心

在浏览器输入 localhost:8000,查看注册中心是否正常启动,出现以下截图,说明已经ok

 

有了注册中心,咱们在接着搞一个服务提供者,和服务消费者。

 

服务提供者

1,新建maven工程

2,在pom文件中引入和注册中心服务同样的jar包。

3,编写application.properties

内容以下:

1 spring.application.name=spring-cloud-producer
2 server.port=9000
3 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

第一行是给本身的服务命名,第二行设置本身的访问端口,第三行设置本身要注册到那个注册中心,由于咱们在上面设置了eureka注册中心是本地的8000端口,因此就写这个地址

4,编写启动类代码

复制代码
1 @SpringBootApplication
2 @EnableDiscoveryClient
3 public class App 
4 {
5     public static void main( String[] args )
6     {
7         SpringApplication.run(App.class, args);
8     }
9 }
复制代码

注意添加 EnableDiscoveryClient 注解

5,编写服务控制器类代码

复制代码
1 @RestController
2 public class HelloController {
3     
4     @RequestMapping("/hello")
5     public String hello(@RequestParam String name) {
6         return "hello "+name+",nice to meet you!";
7     }
8 }
复制代码

 到这里 服务提供者完成,启动程序,无报错便可,刷新注册中心的页面,会看到Application中当前注册的服务。

 

服务调用者

1,新建maven工程

2,一样在pom文件中引入和以前同样的内容。

3,编写application.properties

1 spring.application.name=spring-cloud-consumer
2 server.port=9001
3 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

第一行也是给当前服务起名字,第二行设置端口,第三行设置注册中心url。

4,编写启动类代码

复制代码
 1 @SpringBootApplication
 2 @EnableDiscoveryClient
 3 @EnableFeignClients
 4 public class App 
 5 {
 6     public static void main( String[] args )
 7     {
 8         SpringApplication.run(App.class, args);
 9     }
10 }
复制代码

注意这个启动类,比服务提供者多了一个EnableFeignClients注解,这个注解的做用就是启用feign进行远程调用。

5,编写feign调用实现

1 @FeignClient(name= "spring-cloud-producer")
2 public interface HelloRemote {
3     @RequestMapping(value = "/hello")
4     public String hello(@RequestParam(value = "name") String name);
5 }

注意这是一个接口,上面的注解参数name,就是指定你当前要调用的服务提供者名称。另外还要注意方法中的参数name 和服务提供者中的参数保持一致

6,编写服务调用者控制器类

复制代码
 1 @RestController
 2 public class ConsumerController {
 3 
 4     @Autowired
 5     HelloRemote HelloRemote;
 6     
 7     @RequestMapping("/hello/{name}")
 8     public String hello(@PathVariable("name") String name) {
 9         return HelloRemote.hello(name);
10     }
11 
12 }
复制代码

在当前类中引入HelloRemote 接口,经过调用本地hello方法,而后再调用HelloRemote 接口中的方法

启动程序,无报错便可。

 

刷新注册中心这个时候应该能够看到2个服务已经注册

 

测试验证

 打开浏览器输入 :  http://localhost:9001/hello/JJ

如上图正常返回结果,说明整个服务调用和提供者ok!!!

相关文章
相关标签/搜索