Site Overlay

Nacos动态刷新配置

需求:

日志打印如果全部按照info等级的话,用不了多久就占据了大量的空间,且大批数据在服务稳定后无意义,但随时重启服务器又会导致用户服务中断,因此需要根据情况动态开启日志warn打印和info打印。

设定当前服务已经运行于nacos框架的基础上,配置动态刷新。

一般的springboot默认配置是application.yml文件,如果想指定配置为application-prod.yml的话在服务启动时附带一段启动参数


   -Dspring.config.location=application-prod.yml

如果想要将配置传至nacos中,并动态刷新生效,首先加上maven依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

再在配置文件同级的位置加上一个bootstrap-prod.properties文件,内容如下:

spring.application.name=xxxxxxxx                          //服务名
spring.cloud.nacos.config.file-extension=yaml             //配置文件名尾缀
spring.cloud.nacos.config.server-addr=xxxx.xxxxxxxxx.com:8848    //nacos地址
spring.cloud.nacos.config.group=qdchess                   //配置组名

然后新建一个文件夹,文件夹名为上面的配置组名,文件名为服务名,尾缀为上面配置的尾缀,然后打包压缩,上传至nacos中。

如果按照上面文件打包命名方式的话,在配置列表中就会正确弹出已上传的配置。这时候再以默认方式启动服务,服务就会从云端nacos中读取配置

在服务运行中对该配置文件进行修改后进行发布,服务会动态切换配置文件,至此,就满足了需求中类似动态修改loggin:level:root: warn 与info的需求,如需动态切换别的配置文件,如短信服务地址签名accessKeyId之类的,需要在引入类的位置再加上一个注解@RefreshScope。后即可动态生效配置。

详细配置文件源码读取原理后期会发布,此处仅记录并展示使用方法。

发表回复

您的电子邮箱地址不会被公开。

A beliving heart is your magic My heart
欢迎来到Diuut的个人博客,这里是我的一些零零碎碎的知识汇总,希望有能帮到你的内容。 | 蜀ICP备2021011635号-1 | Copyright © 2024 Diuut. All Rights Reserved.