cloud使用consul作配置中心

cloud - 使用consul作配置中心

引入依赖

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-consul-configartifactId>
dependency>
<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>
  • spring-cloud-starter-consul-config: 作为配置中心
  • spring-cloud-starter-consul-discovery: 注册到consul注册中心
  • spring-boot-starter-actuator: refresh配置中心

服务


@RefreshScope
@RestController
public class ConfigController {

	@Value("${consul.config.name}")
	private String name;

	@GetMapping("/getApplicationName")
	public String getApplicationName() {
		return "application: " + name;
	}

}

注意: @RefreshScope, 这个是,当修改了配置中心内容时,本地能自动感知变化,然后实时返回修改之后的值

当修改配置中心内容时,也可以手动刷新,让本地感知: http://localhost:6060/actuator/refresh

修改配置文件

application.yml内容:

server:
  port: 6060

spring:
  application:
    name: consul-config

# 放开refresh 登陆点
management:
  endpoints:
    web:
      exposure:
        include: '*'

bootstrap.yml内容:

spring:
  cloud:
    consul:
      host: localhost
      port: 8500
      config:
        enabled: true
        format: yaml
        prefix: consul-config-center
  profiles:
    active: dev

默认的,使用consul配置中心时,文件都放在目录config下,这里我们改成了consul-config-center

  • enabled:是否启用consul config的配置项
  • prefix:配置文件的存储的根路径,默认为config
  • default-context:存储服务时使用的文件目录名称,默认为application,一般设置为与spring.application.name相同
  • profile-separator:consul创建key值与环境的分隔符默认, 即 default-context seperator env(dev,prod)
  • data-key:配置文件存储key的值,或者理解为文件的名称,默认为data
  • format:配置文件的文件格式,这里选择yaml

启动配置中心

启动配置中心http://localhost:8500,增加开发配置文件,路径consul-config-center/consul-config,dev/data,这个文件在本地名称应该是dev-application.yml, 内容:

consul:
  config:
    name: hello-me

cloud使用consul作配置中心_第1张图片

1: prefix值,默认是config
2: default-context值,默认是应用的名称,即spring.application.name
3: profile-separator的值,默认是 ,
4: spring.profiles.active的值
5: data-key值,默认是data

访问

  • 访问http://localhost:6060/getApplicationName, 返回hello-me;
  • 如果实时修改配置中心的内容,再次访问http://localhost:6060/getApplicationName,会看到返回修改之后的数据

问题

Could not resolve placeholder 'consul.config.name’

解决方案:

先在consul配置将配置文件的内容写入!!,及项目启动时,确保yml文件中的内容时存在的!!

你可能感兴趣的:(cloud)