SpringCloud搭建微服务之Consul服务配置

1. 概述

前面有介绍过Consul既可以用于服务注册和发现,也可以用于服务配置,本文主要介绍如何使用Consul实现微服务的配置中心,有需要了解如何安装Consul的小伙伴,请查阅SpringCloud搭建微服务之Consul服务注册与发现,这里就不再重复。

2. Consul Key/Value配置

进入Consul管理页面,选择Key/Value,进行Key/Value配置

点击Create,进入Key/Value创建页面,新建一个名为config的文件,并以/结尾

进入config文件,在其下根据环境创建对应的文件,例如:spring-cloud-consul-qua、spring-cloud-consul-val,并以/结尾

创建应用文件如下:

在应用文件目录下创建具体的data数据

同理,在其他几个文件中添加配置数据

3. Spring Cloud集成Consul配置中心

3.1. 引入核心依赖

在pom.xml文件中引入consul配置依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3.2. 配置consul

新建bootstrp.yml配置文件,添加如下配置信息

yaml 复制代码
spring:
  application:
    name: spring-cloud-consul
  profiles:
    active: qua
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
      config:
        profile-separator: '-'
        format: YAML

3.3. 验证

启动服务,查看控制台,可以看到微服务引用的指定的qua配置文件

在服务中写一个测试接口,使用IDEA自带的HTTP测试接口,可以看到

3.4. 动态刷新

如果在Consul配置中心修改了配置信息,微服务是不能及时更新的,需要在主启动类上添加注解@RefreshScope

java 复制代码
@RefreshScope
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsulApplication.class, args);
    }
}

4. Consul数据持久化

4.1. 问题

如果Consul应用重启了,配置中心的数据会丢失,服务会拿取不到之前的数据,刷新Consul页面会报404错误,如下图:

4.2. 持久化配置

本文是本地文件保存方式实现数据持久化,在consul安装目录下,新建consul_data文件夹和consul_start.bat文件,在consul_start.bat文件中填写如下内容:

powershell 复制代码
@echo.Consul服务正在启动......
@echo off
@sc create Consul binpath="D:\software\consul_1.18.0_windows_amd64\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect 1 -data-dir D:\software\consul_1.18.0_windows_amd64\consul_data"
@net start Consul
@sc config Consul start=AUTO
@echo.Consul start is OK ...... Success
@pause

使用管理员权限打开consul_start.bat文件

服务启动后重新配置数据,打开任务管理器,可以看到Consul服务进程

再次重启Consul服务时,配置的数据还在,consul_data文件夹中也有一些文件

相关推荐
斯班奇的好朋友阿法法4 分钟前
rabbitmq在微服务中配置监听开关
微服务·rabbitmq·ruby
云创智城-yuncitys3 小时前
SpringCloud 架构在智慧交通路侧停车系统中的实践:从技术落地到城市级服务升级
spring·spring cloud·架构·智慧城市·停车系统·充电系统源码
番茄Salad4 小时前
Spring Boot临时解决循环依赖注入问题
java·spring boot·spring cloud
kkkkk0211069 小时前
微服务学习笔记(黑马商城)
java·spring boot·spring·spring cloud·sentinel·mybatis·java-rabbitmq
阿里云云原生10 小时前
阿里云微服务引擎 MSE 及 API 网关 2025 年 9 月产品动态
微服务
洛克大航海12 小时前
5-SpringCloud-服务链路追踪 Micrometer Tracing
后端·spring·spring cloud·zipkin·micrometer
二宝15212 小时前
黑马商城day3-微服务01
微服务·云原生·架构
roykingw12 小时前
【终极面试集锦】如何设计微服务熔断体系?
java·微服务·面试
我命由我1234512 小时前
Spring Cloud - Spring Cloud 微服务概述 (微服务的产生与特点、微服务的优缺点、微服务设计原则、微服务架构的核心组件)
java·运维·spring·spring cloud·微服务·架构·java-ee
我命由我1234513 小时前
Spring Cloud - Spring Cloud 注册中心与服务提供者(Spring Cloud Eureka 概述、微服务快速入门、微服务应用实例)
java·spring boot·spring·spring cloud·微服务·eureka·java-ee