spring-cloud使用consul作为配置中心和注册中心
注意事项
- 启动类上需要设置@EnableScheduling注解 配置才能自动刷新
- 启动类上需要设置@EnableConfigurationProperties({StudentConfig.class})
- model类上设置@ConfigurationProperties(prefix = “student”) //前缀:对应consul 配置中心的 student 前缀
- 通过@Value注入的属性,修改consul的配置后,属性不能立即生效,需要服务重启。而通过@ConfigurationProperties注入的属性,修改consul的配置后,属性会立即生效,所以建议如果需要动态生效的配置,最好使用@ConfigurationProperties进行属性的注入。
- consul可以作为配置中心和注册中心
pom.xmlbootstrap.yml
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.guochen</groupId>
<artifactId>consuldemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>consuldemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>application.ymlspring:
cloud:
consul:
host: localhost
port: 8500
#enabled将此值设置为“false”禁用Consul配置
config:
enabled: true #默认是true --
format: YAML # 表示consul上面文件的格式 有四种 YAML PROPERTIES KEY-VALUE FILES
data-key: data #表示consul上面的KEY值(或者说文件的名字) 默认是data
# watch选项为配置监视功能,主要监视配置的改变
watch:
enabled: true
delay: 10000
wait-time: 30spring:
application:
name: consul-service
profiles:
active: dev
cloud:
consul:
# 服务发现配置
discovery:
# 启用服务发现
enabled: true
# 启用服务注册
register: true
# 服务停止时取消注册
deregister: true
# 表示注册时使用IP而不是hostname
prefer-ip-address: true
# 执行监控检查的频率
health-check-interval: 30s
# 设置健康检查失败多长时间后,取消注册
health-check-critical-timeout: 30s
# 健康检查的路径
health-check-path: /actuator/info
# 服务注册标识,格式为:应用名称+服务器IP+端口
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
启动类
|
model类
package io.guochen.consuldemo.model; |
测试类
package io.guochen.consuldemo.controller; |
添加consul配置
注意:
- 默认情况下,consul配置默认存储在/config文件夹中
- myconsul为spring.application.name值,dev为spring.profiles.active值,data为data-key值
- value用的是yml格式的配置,冒号后面有一个空格。
程序启动后可以看到consul里已经注册成功
且配置可以正常读取
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment