springcloud笔记六分布式配置中心config

Posted 今夜月色很美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud笔记六分布式配置中心config相关的知识,希望对你有一定的参考价值。

官网文档https://cloud.spring.io/spring-cloud-config/reference/html/

config分布式配置中心搭建

pom.xml

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

application.yaml文件

spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      label: main
      server:
        git:
          uri: https://github.com/liuyunzhen/springcloud-config.git
          search-paths:
            - springcloud-config
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/
spring.cloud.config.server.git.uri配置github上配置文件项目的仓库地址
spring.cloud.config.server.git.search-paths仓库名
label分支名称

启动类添加@EnableConfigServer注解

client客户端项目从config中读取配置

使用程序引导配置文件bootstrap.yml

pom.xml增加maven坐标

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

bootstrap.yaml配置

spring:
  application:
    name: payment-service
  cloud:
    config:
      label: main
      name: config
      profile: dev
      uri: http://localhost:3344

动态刷新问题

1.配置文件内容调整

修改github远程配置文件后,config分布式配置中心会立刻更新,但client读取到的内容无变化,除非client模块重启。

2.不重启手动刷新配置方法

client客户端添加bootstrap.yaml配置

# 暴漏刷新端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

client客户端controller添加@RefreshScope注解

注意:如果多个controller使用了待刷新配置属性,每个controller上都需要加上@RefreshScope

使用post方式调用client客户端actuator刷新配置接口

http://localhost:8001/actuator/refresh

刷新成功:

[
    "config.client.version",
    "config.info"
]

安装rabbitmq

1、配置 epel

yum install epel-release

2、安装

yum install rabbitmq-server

3、启动

# 启动
systemctl start rabbitmq-server
# 状态
systemctl status rabbitmq-server
# 关闭
systemctl stop rabbitmq-server

4、配置网页插件(从网页登陆端口号:15672)

# 启用插件
rabbitmq-plugins enable rabbitmq_management

5、登录

# 默认账号guest/guest
http://192.168.1.72:15672 

动态刷新全局广播

配置中心增加maven

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

配置中心增加yaml配置

spring:
  rabbitmq:
    host: 192.168.137.200
    port: 5672
    username: guest
    password: guest
# 暴露bus刷新配置的端点
management:
  endpoints:
    web:
      exposure:
        include: "bus-refresh"

client客户端项目增加maven坐标

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

client客户端项目增加yaml配置

spring:
  rabbitmq:
    host: 192.168.137.200
    port: 5672
    username: guest
    password: guest

调用配置中心刷新端点

全局刷新

http://localhost:3344/actuator/bus-refresh

定点刷新(payment-service:8001是服务名和端口)

http://localhost:3344/actuator/bus-refresh/payment-service:8001

遇到问题

错误一:

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Sat Jun 12 16:53:22 CST 2021
There was an unexpected error (type=Not Found, status=404).
No such label: master
org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: master

分支不存在,spring.cloud.config.label修改为正确的分支即可

错误二:

bus配置rabbitmq之后,中心和消费client启动后,rabbitmq管理界面no queue

检查发现由于maven坐标是看教程的过程中手敲,不小心导错了包,将springcloud敲成了spring-boot,错误的maven坐标

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-bus-amqp</artifactId>
        </dependency>

正确的maven坐标

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

以上是关于springcloud笔记六分布式配置中心config的主要内容,如果未能解决你的问题,请参考以下文章

企业分布式微服务云SpringCloud SpringBoot mybatis 分布式配置中心

企业级 SpringCloud 教程 分布式配置中心(Spring Cloud Config

企业分布式微服务云SpringCloud SpringBoot mybatis 分布式配置中心(Spring Cloud Config)

SpringCloud学习之六:使用Spring Cloud Bus自动刷新配置

SpringCloud框架之Config分布式配置中心

十Elasticsearch 8.x 分布式搜索引擎 -2