consul的服务端,就是直接将Consul的服务启动即可,然后现在需要做的是配置客户端,1、配置pom.xml,添加
spring-cloud-starter-consul-discovery
的依赖,2、配置application.yml 设置consul的注册节点,3、配置启动类,添加@EnableDiscoveryClient
注解,表示俺是一个注册类。4、添加一个测试服务,查看当前界consul服务器所有的注册服务信息。
代码地址
https://gitee.com/yellowcong/springcloud/tree/master/chapter14/
目录结构
搭建Consul客户端
1、配置pom.xml
在pom.xml添加spring-cloud-starter-consul-discovery
的依赖,这样才可以注册服务到consul上
<!--consul server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>1.3.0.RELEASE</version><!--$NO-MVN-MAN-VER$-->
</dependency>
下面是完整的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>
<groupId>yellowcong.com</groupId>
<artifactId>cas-client-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cas-client-springboot</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!-- 引用父类依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--consul server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>1.3.0.RELEASE</version><!--$NO-MVN-MAN-VER$-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 添加spring的插件, 就可以直接通过 mvn spring-boot:run 运行了 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.4.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
2、配置application.yml
配置consul的服务器地址信息,同时还配置了健康检查,每隔15s检查一下,服务是不是宕机了。
# 注册服务的端口
server:
port: 8761
#配置服务的名称
spring:
application:
name: consul-client
#配置consul注册服务器地址
---
spring:
cloud:
consul:
host: yellowcong.com
port: 8500
discovery: #健康检查
healthCheckPath: ${management.contextPath}/health
healthCheckInterval: 15s
3、配置启动类
添加注解@EnableDiscoveryClient
,表示这个服务开启向consul服务器上注册服务。
package com.yellowcong;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigMain {
public static void main(String[] args) {
SpringApplication.run(ConfigMain.class, args);
}
}
4、添加一个服务测试
测试服务类中,注入了DiscoveryClient
对象,可以通过这个类查看当前Consul容器中,注册的所有服务信息。
package com.yellowcong.main;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
DiscoveryClient discoveryClient;
@GetMapping("/test")
public String test() {
//获取实例化的注册节点
List<ServiceInstance> list = discoveryClient.getInstances("CONSUL-CLIENT");
//获取实例化的服务
StringBuffer sb = new StringBuffer();
if (list != null && list.size() > 0 ) {
sb.append(list.get(0).getUri()+",");
}
return "hello world "+sb.toString();
}
}
5、访问测试
访问consul的控制台http://127.0.0.1:8500 ,可以看到注册上的服务信息
访问测试服务:http://yellowcong.com:8761/test,可以看到,返回了我们当前节点配置的服务地址信息。