项目示例 - 2.服务注册 - 3.Consul
关联知识:
- 分布式微服务 - 2.服务注册 - 4.Consul
内容提要:
- 服务注册实现
服务注册实现
- 建Module:微服务起名为consul-provider
- 改pom:引入以下依赖
<dependencies>
<!--consul依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 写yml:在resources目录下创建application.yml文件,并做以下配置
server:
port: 8001
spring:
application:
# 默认使用该属性作为别名进行服务注册
name: consul-provider
cloud:
consul:
# consul的ip地址
host: localhost
# consul的端口号
port: 8500
discovery:
# 配置用于健康检查的路径,默认使用/actuator/health路径
health-check-path: /consul/provider/test
- 主启动:在src下创建如下主启动类
package learn.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConsulProvider {
public static void main(String[] args) {
SpringApplication.run(ConsulProvider.class, args);
}
}
- 业务构建:创建如下controller类
package learn.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@RestController
@RequestMapping("/consul/provider/")
public class ProviderController {
@Value("${spring.application.name} ${server.port}")
private String serverInfo;
@GetMapping("test")
public String test() {
return serverInfo+"\t"+ UUID.randomUUID();
}
}
- 测试:
- 启动consul并在浏览器中能正常打开首页,观察services中仅有consul
- 启动本微服务,浏览器中输入
localhost:8001/consul/provider/test
访问接口能正确返回信息 - 再次观察consul首页中的services,发现多了consul-provider的service,表明微服务注册成功。