前言
欢迎来到菜鸟SpringCloud入门实战系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。
本系列适合有一定Java以及SpringBoot基础的同学阅读。
每篇文章末尾都附有本文对应的Github源代码,方便同学调试。
实战版本
- SpringBoot:2.0.3.RELEASE
- SpringCloud:Finchley.RELEASE
-----正文开始-----
创建服务提供者并在Eureka进行注册
首先创建子模块eureka-hi,作为服务提供者模块
编辑其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>
<artifactId>eureka-hi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-hi</name>
<packaging>jar</packaging>
<description>Demo project for Spring Boot</description>
<!--父工程的依赖-->
<parent>
<groupId>com.pricemonitor</groupId>
<artifactId>springcloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
</dependencies>
</project>
之后别忘了在主模块pom加上该子模块:
<!--子模块-->
<modules>
<module>eureka</module>
<module>eureka-hi</module>
</modules>
添加注解@EnableEurekaClient
注意,服务调用者是一个需要注册到Eureka的客户端,所以是client不是server。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
@EnableEurekaClient
public class EurekaHiApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaHiApplication.class, args);
}
/**
* 获取端口号
*/
@Value("${server.port}")
String port;
/**
* 定义一个简单接口
*
* @param name
* @return
*/
@GetMapping("/hi/{name}")
public String home(@PathVariable String name) {
return "hi " + name + ",I am from port :" + port;
}
}
代码重点:
- 实现了一个简易的RESTful接口
- 添加@EnableEurekaClient
编辑配置文件application.yml
# 端口号
server:
port: 8763
# 服务名称,即serviceId
spring:
application:
name: service-hi
# 服务注册与发现相关配置
eureka:
client:
# 服务注册地址
serviceUrl:
defaultZone: http://localhost:8761/eureka/
代码重点:
- defaultZone: http://localhost:8761/eureka/, 这里将该服务注册到localhost:8761
运行
同时运行刚才端口8761的eureka和端口8763的eureka-hi模块,这里使用很方便的IDEA Run DashBoard。在Run Dashboard里可以同时对几个应用进行运行停止等操作。
发现服务端有了正在提供服务的SERVICE-HI
查看:http://localhost:8763/hi/rude3knife
说明服务可以直接调用
问题来了,如果关闭了8761端口的eureka server,会发生什么情况?
如果关闭了8761端口的eureka,直接访问http://localhost:8763/hi/xxxx,eureka-hi控制台已经开始报错,无法连接上Eureka注册中心。
让我们重新运行Eureka注册中心
重新运行后,8763的eureka-hi服务又自动重新在8761的注册中心处进行了注册。
本文教程所对应工程代码
https://github.com/qqxx6661/springcloud_for_noob/tree/master/02-eureka-hi
参考
Spring-Cloud笔记03:服务注册中心Eureka Server的简单配置、访问控制配置以及高可用配置
https://blog.csdn.net/hanchao5272/article/details/80561199
springcloud(三):服务提供与调用
http://www.ityouknow.com/springcloud/2017/05/12/eureka-provider-constomer.html