2024-5-9-从0到1手写配置中心Config之@ConfigurationProperties热更新

news2024/12/24 8:07:59
  1. 在PropertySourcesProcessor中,需要通过http从config-server获取配置。

图片

  1. 使用ConfigMeta包装服务信息

图片

  1. 在MidnightConfigService接口中添加默认实现类
  • 继承MidnightRepositoryChangeListener接口;
  • 获取默认的MidnightRepository;
  • 创建MidnightConfigServiceImpl实现类;
  • 添加listener

图片

  1. 定义MidnightRepositoryChangeListener,用于事件监听的回调接口
  • onChange() 执行方法
  • ChangeEvent变动事件,传递参数

图片

  1. 定义MidnightRepository接口
  • 提供默认实现类
  • getConfig()获取配置
  • addListener()添加监听器

图片

  1. MidnightRepositoryImpl实现从server获取配置
  • meta保存服务配置源信息;
  • versionMap保存server版本号,用于比较本地和远程版本信息,用于比对配置是否发生变化;
  • configMap保存一个ns服务下所有配置信息;
  • executor定时任务,监听服务端配置是否发生变化;
  • listeners保存监听器。

图片

  1. findAll()接口

发起http请求,从config-server获取所有配置信息。

图片

  1. heartbeat() 心跳检测
  • 发起http请求,从配置中心服务端获取最新版本信息;
  • 当远程版本信息大于本地版本信息时,说明配置发生了变化。
  • 保存最新版本信息;
  • 从配置中心重新获取所有配置信息;
  • 保存最新的配置信息;
  • 发布配置发生变更事件

图片

  1. onChange() 发布事件
  • 更新本地最新配置
  • 通过Spring发布环境变更事件。事件类EnvironmentChangeEvent来自于SpringCloud,解决微服务架构下配置热更新问题。

图片

  1. 重新绑定配置

当EnvironmentChangeEvent事件发布之后,会重新绑定PropertySource,调用getProperty()方法获取最新配置。

图片

  • @ConfigurationProperties 中的属性就会被更新

图片

  1. 测试
  • 启动config-server
  • 启动config-client
  • 观察日志,最开始的值如下

图片

  • 更新这两个值后,再观察日志。

发现版本发生了变化,重新获取了配置,并发布了EnvironmentChangeEvent事件。

图片

  • 两个值已经被更新了

图片

源代码:

https://github.com/midnight2104/midnight-config/tree/v3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12306技术内幕

公司内部做的一次技术分享 文章目录 12306的成就12306系统特点12306系统难点解决思路产品角度技术角度余票库存的表如何设计? 抢票软件推荐巨人的肩膀 对于未公开的技术部分,只能结合已公开的信息,去做大胆的猜想。 本文提到的一些解决方案&…

chatgpt线性差值 将直线渐变颜色

color(x)(x-x1)/(x2-x1) 与gpt给出的 这个位置比例可以表示为d/L是概念相同 x-x1是计算当前点距离起点距离,x2-x1是计算长度 例如,如果我们在直线上距离起点A的距离为d,整条直线的长度为L 用数学方式解释 2024/5/25 18:54:30 当我们要在一…

【算法例题】递推与递归

刚讲完递推和递归,趁热打铁,给大家出点例题。 没学过的,先去学一下。 【算法】递推&递归https://blog.csdn.net/yangyanbin_sam/article/details/139182393?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22…

⌈ 传知代码 ⌋ 基于扩散模型的无载体图像隐写术

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

小红书无限加群脚本无需ROOT【使用简单无教程】

小红书无限加群脚本无需ROOT,包含了对应的小红书版本【使用简单无教程】 链接:https://pan.baidu.com/s/1HkLhahmHDFMKvqCC3Q3haA?pwd6hzf 提取码:6hzf

ISCC 2024 部分wp

文章目录 一、Misc1、Number_is_the_key2、FunZip3、擂台—— 重“隐”;4、RSA_KU5、时间刺客6、成语学习7、 精装四合一8、钢铁侠在解密9、有人让我给你带个话10、Magic_Keyboard11、工业互联网模拟仿真数据分析 二、Web1、还没想好名字的塔防游戏2、代码审计3、原…

【C++】<图形库> 三人成棋(面向对象写法)

目录 一、游戏需求 二、程序架构 三、代码实现 四、实现效果 五、已知BUG 一、游戏需求 构建一个五子棋游戏,在自定义棋盘宽度和高度的基础上,实现三人对战功能,并且能判定谁输谁赢。 二、程序架构 (1) 对象分析: 【1】 需…

人工智能-YOLOv10-行人和车辆检测-yolo改进测距测速代码和原理

YOLOv10: 实时端到端目标检测技术的全新突破 YOLOv10代表了实时目标检测领域的重大进展,是YOLO系列模型的最新迭代,专为追求极致效率与精度平衡的应用场景设计。此项目由北京大学机器智能研究组(THU-MIG)的Ao Wang、Hui Chen、Li…

直击CHIMA 2024│美创全栈全新数安能力精彩亮相

5月17日,中国医院信息网络大会(CHIMA 2024)在南京正式拉开帷幕。本次大会以新质生产力理论为指导,以深化应用,融合创新,用信息技术赋能医院高质量发展为主题。 作为医疗数据安全的创新引领者和深耕实践者,美创科技再次…

IDEA通过tomcat运行注意事项

配置run--》edit configurations 以下的A B部分要保持一致 A和B的路径要保持一致

vue/core源码中ref源码的js化

起源: 当看见reactivity文件中的ref.ts文件长达五百多的ts代码后,突发奇想想看下转化成js有多少行。 进行转化: let shouldTrack true; // Define shouldTrack variable let activeEffect null; // Define activeEffect variable// 定义…

MATLAB system identification系统辨识app的使用

系统辨识 前言系统辨识第一步 选取时域数据到app第二步 分割数据第三步 设置传递函数的参数第四步 Estimate第五步 结束 前言 接上节:simulink-仿真以及PID参数整定 系统模型的辨识工作,在控制领域,一般用于开发控制器的先手工作。一般而言…

curl: (60) SSL certificate problem: self-signed certificat

目录: 1、背景2、测试结果 1、背景 今天帮忙客户排查问题,报错请求超时,但是ping客户的ip以及测试端口都是通的,最终不得不从中台服务器上发起请求客户回调接口,报错如下: 怀疑是客户的证书有问题&#xf…

测试网0撸大毛 — AI 公链ALIENX推出HAL Testnet活动(含保姆级教程)

近期,OpenAI推出了新一代的GPT-4o让AI再次获得关注。AI硬件销售商英伟达的股价也突破1000美元,市值攀升到2.6万亿美元。AI继续影响到我们生活的方方面面。 在加密货币行业,市场行情也逐渐走出低谷。以太坊现货ETF被批准,为整个市场…

51单片机 简单计算机实现

书接上回;http://t.csdnimg.cn/T4b0W 键盘位置如上 效果图 因为是四位,就没显示等于号, 而且段数比较少 显示不出来加号 所以 A ; B - ; C *; D / 基本原来都一样. 代码奉上 #include <reg51.h>#include <STRING.H>//利用矩阵键盘按键按下依次在数码管显…

九、OpenAI之图片生成(Image generation)

学习用DALL.E的API怎样生成和操作图片 1 介绍 图片API提供3个方法来和图片进行交互&#xff1a; 从0开始基于文字提示创建图片(DALL.E 3 and DALL.E2)基于一个新的提示词&#xff0c;通过让模型替换已有图像的某些区域来创建图像的编辑版本;&#xff08;DALL.E2&#xff09;…

2024洗地机哪个牌子好?洗地机十大品牌

洗地机在不同家庭环境中都能发挥其独特的优势&#xff0c;无论是大面积的地板还是狭小的角落&#xff0c;都能轻松应对。 对于有孩子或宠物的家庭&#xff0c;地面上经常会有各种杂物和污渍&#xff0c;洗地机强大的吸力和深度清洁功能&#xff0c;可以迅速清理掉这些脏东西&a…

嵩山为什么称为三水之源

三水指黄河、淮河、济河&#xff0c;这三条河流环绕在嵩山周边。 黄河横亘在嵩山北部&#xff0c;其支流伊洛河从西南方环绕嵩山&#xff0c;然后汇入黄河。济河&#xff0c;古称济水&#xff0c;源自济源王屋山&#xff0c;自身河道在东晋时代被黄河夺占&#xff0c;从此消失。…

C#_库的引用

类库的引用 还可以自己引用类库&#xff1a;解决方案-添加-新建项目 主程序 using System; using System.Windows.Forms; using Tools;namespace ConsoleApp2 {class Program{static void Main(string[] args){//Console.WriteLine("helloword");// Form form ne…