SpringCloud学习第二篇:使用Consul注册中心(Greenwich-SR1版本)
一、Consul的安装与配置
之前有文章记录过如何配置
二、服务的注册
- 引入Maven依赖
<parent>
<groupId>com.yk</groupId>
<artifactId>cloud-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>springcloud-consul-client</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
</dependencies>
- 服务发现
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient //注册发现
public class ConsulApplication {
public static void main(String[] args) {
SpringApplication.run(ConsulApplication.class, args);
}
}
- yml配置
spring.application.name=spring-cloud-consul-client
server.port=8080
# 连接 Consul 服务器的配置
# Consul 主机地址
spring.cloud.consul.host = http://192.168.100.129
# Consul 服务端口
spring.cloud.consul.port = 8500
#调整HealthCheck路径使其传递到Consul服务器,帮助回调,如果不配置注册上的服务会不成功
spring.cloud.consul.discovery.healthCheckPath = /check
#服务的主机地址 默认是本机
spring.cloud.consul.discovery.hostname = 192.168.0.102
- 测试Demo
@RestController
public class DiscoveryClientController {
@Autowired
private DiscoveryClient discoveryClient;
@Value("${spring.application.name}")
private String ApplicationName;
/**
* @Author: yangk
* @Description: 获取所有的服务名称
* @Param: []
* @return: java.util.List<java.lang.String>
* @Date: 2019年06月09日 10时38分
*/
@GetMapping("listServices")
public List<String> listServices() {
return discoveryClient.getServices();
}
/**
* @Author: yangk
* @Description: 获取所有的服务实例信息
* @Param:
* @return:
* @Date: 2019年06月09日 10时41分
*/
@GetMapping("listInstance")
public List<ServiceInstance> listInstance() {
List<String> servers = listServices();
LinkedList<ServiceInstance> serviceInstances = new LinkedList<>();
servers.forEach(serviceName -> {
serviceInstances.addAll(discoveryClient.getInstances(serviceName));
});
return serviceInstances;
}
/**
* @Author: yangk
* @Description: 获取当前应用的实例
* @Param:
* @return:
* @Date: 2019年06月09日 10时44分
*/
@GetMapping("getCurrentServiceInstance")
public ServiceInstance getCurrentServiceInstance() {
return discoveryClient.getInstances(ApplicationName).get(0);
}
/**
* @Author: yangk
* @Description: Consul服务器的回调
* @Param:
* @return:
* @Date: 2019年06月09日 12时51分
*/
@GetMapping("/check")
public String check() {
return "OK";
}
}
三、启动
- 启动两个客户端
-
通过ip:8500查询Consul ui页面
-
查看实例