一:SpringCloud聚合子模块之microservicecloud-consumer-dept-80,部门服务消费者
- 新建microservicecloud-consumer-dept-80
- 修改pom.xml文件
<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>com.topcheer</groupId> <artifactId>microservicecloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>microservicecloud-consumer-dept-80</artifactId> <description>部门微服务消费者</description> <dependencies> <!--这里我们引入自己自定义的api通用包,就可以使用Dept部门实体 --> <dependency> <groupId>com.topcheer</groupId> <artifactId>microservicecloud-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--修改后立即热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project>
- 修改application.yml文件
- 创建配置类信息ConfigBean
RestTemplate简介
- 创建消费者controller类
package com.topcheer.springcloud.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import com.topcheer.springcloud.entities.Dept; @RestController public class DeptController_Consumer { //定义调用服务端的基本路径地址 private static final String REST_URL_PREFIX = "http://localhost:8001"; @Autowired private RestTemplate restTemplate;//使用restTemplate远程调用服务端接口 @RequestMapping(value="/consumer/dept/add") public boolean add(Dept dept) { //restTemplate需要的三个参数:路径,参数,返回类型 return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, boolean.class); } @RequestMapping(value="/consumer/dept/get/{id}") public Dept get(@PathVariable("id") Long id) { return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Dept.class); } @SuppressWarnings("unchecked") @RequestMapping(value="/consumer/dept/list") public List<Dept> list() { return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class); } }
-
创建启动类DeptConsumer80_App
package com.topcheer.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DeptConsumer80_App { public static void main(String[] args) { SpringApplication.run(DeptConsumer80_App.class, args); } }
-
将微服务的服务端和消费端都启动起来并且测试刚刚创建的消费端,看看是否可以调用服务端接口
⑴测试路径:http://localhost/consumer/dept/list
效果:
⑵ 测试路径:http://localhost/consumer/dept/get/2
⑶测试路径:http://localhost/consumer/dept/add?dname=gogogo
二:Eureka服务注册与发现
- 什么是Eureka?
- Eureka基本架构和原理
- Eureka的三大角色
①Eureka Server提供服务注册和发现
②Service Provider服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到
③Service Consumer服务消费方从Eureka获取注册服务列表,从而能够消费服务 - 建立EurekaServer服务注册中心
⑴创建子模块microservicecloud-eureka-7001
⑵修改pom.xml文件
<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>com.topcheer</groupId> <artifactId>microservicecloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>microservicecloud-eureka-7001</artifactId> <dependencies> <!--添加eureka-server服务端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!--修改后立即热部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project>
⑶创建application.yml文件
server: port: 7001 eureka: instance: hostname: localhost #这个是eureka服务端的实例名称 client: register-with-eureka: false #false表示我们这个7001服务不向注册中心注册自己 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 service-url: #下面的这个defaultZone,设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #其实就是上面定义的http://localhost:7001/eureka/
⑷创建7001的启动类
⑸测试7001服务,老方法启动这个7001微服务
- 将部门微服务提供者8001注册进Eureka服务中心
⑴修改microservicecloud-provider-dept-8001微服务的pom.xml文件,添加依赖
⑵ 修改microservicecloud-provider-dept-8001微服务的application.yml文件
⑶修改DeptProvider8001_App这个启动类
⑷启动7001注册中心和8001微服务提供者服务端
访问7001效果:
⑸但是现在出现一个问题,几分钟后,页面出现下面效果,出现红色字体
(这个是eureka自我保护,后面说)
⑹springcloud微服务完善,主机映射名称修改,修改8001的application.yml文件
效果:
⑺修改主机IP信息提示,修改8001的application.yml文件
现在的效果:
修改的内容:
效果: