一、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页面
- 查看实例