前言
欢迎来到菜鸟SpringCloud入门实战系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。
本系列适合有一定Java以及SpringBoot基础的同学阅读。
创建服务提供者并在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里可以同时对几个应用进行运行停止等操作。
查看:http://localhost:8761/
发现服务端有了正在提供服务的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