一、Consul的安裝與配置
https://www.cnblogs.com/yangk1996/p/10742911.html
二、服務的註冊
- 引入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頁面
-
查看實例