本文仅用于记录自己学习SpringCloud-Consul的学习过程,包含配置Consul及其key/value的持久化,如若有误,还请手下留情,遵循共同学习进步的原则。
SpringBoot3.2.0+SpringCloud 2023.0.0 + jdk17
一、安装
1.下载:https://developer.hashicorp.com/consul/install
2.解压
3.测试: cmd -> consul --version 查看对应版本,成功表明安装成功
二、启动
命令: cmd -> consul agent -dev
地址:http://localhost:8500
三、功能部署(服务注册中心)
1.pom导入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
yml配置
spring: cloud: consul: host: localhost port: 8500
启动类加 @EnableDiscovery
启动服务可以发现当前微服务的名称
四、调用consul的微服务
http:// + 微服务名称
注意!!!
consul天生支持负载均衡,我这里用的是RestTemplate,需要加 @LoadBalanced
@Configuration public class RestTemplateConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
五、 服务配置中心功能部署
### 一次统一配置多个服务的配置
引依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
新建微服务模块配置 bootstart.yml (对原来的配置适当的删减)
spring: application: name: cloud-payment-service ###服务名称 cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name} config: profile-separator: '-' ###分隔符下面是文件类型 format: YAML watch: wait-time: 55 ###动态刷新配置等待时间默认55 慎改
最后在网站上加key-value的配置
配置持久化
注意文件路径及文件保存路径
@sc create Consul binpath= "D:\tools\consul\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect 1 -data-dir D:\tools\consul\consul-data"
@echo.服务启动
@echo off
@sc create Consul binpath= "D:\tools\consul\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect 1 -data-dir D:\tools\consul\consul-data"
@net start Consul
@sc config Consul start= AUTO
@echo.Consul start success
@pause
右击以管理员启动即可