通过配置中心实现热更新

配置热更新

有很多的业务相关参数,将来可能会根据实际情况临时调整。例如购物车业务,购物车数量有一个上限,默认是10,对应代码如下:
现在这里购物车是写死的固定值,我们应该将其配置在配置文件中,方便后期修改。
但现在的问题是,即便写在配置文件中,修改了配置还是需要重新打包、重启服务才能生效。能不能不用重启,直接生效呢?
这就要用到Nacos的配置热更新能力了,分为两步:
  • 在Nacos中添加配置
  • 在微服务读取配置
 

添加配置到Nacos

首先,我们在nacos中添加一个配置文件,将购物车的上限数量添加到配置中:
注意文件的dataId格式:
[服务名]-[spring.active.profile].[后缀名]
文件名称由三部分组成:
  • 服务名:我们是购物车服务,所以是cart-service
  • spring.active.profile:就是spring boot中的spring.active.profile,可以省略,则所有profile共享该配置
  • 后缀名:例如yaml
 
这里我们直接使用cart-service.yaml这个名称,则不管是dev还是local环境都可以共享该配置。
配置内容如下:
hm:
  cart:
    maxAmount: 1 # 购物车商品数量上限
 
提交配置,在控制台能看到新添加的配置:
 

配置热更新

配置热更新有两种方案:
1、在@Value注解所在的类上面新增注解:@RefreshScope
 
2、配置属性类,在类上新增注解:@ConfigurationProperties
接着,我们在微服务中读取配置,实现配置热更新。
cart-service中新建一个属性读取类:
代码如下:
package com.hmall.cart.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "hm.cart")
public class CartProperties {
    private Integer maxAmount;
}
 
接着,在业务中使用该属性加载类:
 
测试,向购物车中添加多个商品:
我们在nacos控制台,将购物车上限配置为5:
 
无需重启,再次测试购物车功能:
加入成功!
无需重启服务,配置热更新就生效了!
 
posted @   灵泽pro  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示