在上一篇Eureka注册中心中,我们通过添加Eureka依赖,在项目中启动了注册中心,这里我们将:1. 启动服务提供者,将服务注册到注册中心;2. 启动服务消费者,来调用服务提供者所提供的服务接口
1. 服务提供者
创建项目eureka-client-user-service,作为服务提供者注册到Euraka中。
1.1 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--actuator监控依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
1.2 编写启动类
@EnableDiscoveryClient
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
1.3 服务提供者接口
@RestController
public class UserController {
@GetMapping("/user/hello")
public String hello() {
return "hello";
}
}
1.4 配置文件application.properties
spring.application.name=eureka-client-user-service
server.port=8083
eureka.client.serviceUrl.defaultZone=http://fragrans:123456@localhost:8761/eureka/
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
# 自定义元数据key-value格式
eureka.instance.metadata-map.fragrans=fragrans
# 开启actuator监控
management.endpoints.web.exposure.include = serviceEndPoint,*
# 自定义实例跳转链接,跳转到上面暴露的serviceEndPoint端点
eureka.instance.status-page-url=http://localhost:${server.port}/actuator/serviceEndPoint
1.5 启动服务提供者
启动App类,通过Eureka控制台页面,可以看到服务已经注册到了Eureka
2 服务消费者
创建服务消费者工程eureka-client-article-service
2.1 添加pom依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2.2 编写启动类
@EnableDiscoveryClient
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
2.3 服务接口类
@RestController
public class ArticleController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/article/callHello")
public String callHello2() {
return restTemplate.getForObject(
"http://eureka-client-user-service/user/hello", String.class);
}
}
2.4 配置文件application.properties
spring.application.name=eureka-client-article-service
server.port=8082
eureka.client.serviceUrl.defaultZone=http://fragrans:123456@localhost:8761/eureka/
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
eureka.instance.metadata-map.fragrans=fragrans
# 自定义实例跳转链接
eureka.instance.status-page-url=https://blog.csdn.net/litlit023/article/details/105906530
eureka.client.healthcheck.enabled=true
eureka.instance.lease-renewal-interval-in-seconds=5
eureka.instance.lease-expiration-duration-in-seconds=5
2.5 启动消费者App
启动App类后,查看Eureka的控制台页面,可以看到消费者服务器也已经注册到Eureka中,如下图所示:
通过浏览器请求
3. 总结
上述内容主要是在学习《Spring Cloud微服务 入门 实战与进阶》时,做的一些笔记,代码也是根据书中代码,稍微做了修改。
上述代码github地址:
服务提供者代码
服务消费者代码
参考资料:
- 《Spring Cloud微服务 入门 实战与进阶》
- https://www.springcloud.cc/