您好,登錄后才能下訂單哦!
SpringCloud動(dòng)態(tài)配置變化監(jiān)控的實(shí)例分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
配置中心有原生的 SpringCloud Config
、國(guó)內(nèi)開源的 阿里 Nacos
、攜程 Apollo
等。 都是配置熱加載的基礎(chǔ)上增加了其他的功能。
配置中心具有配置熱加載,修改配置 -> 推送到程序 -> 執(zhí)行配置更新。
而獲取配置更新的具體內(nèi)容,這些組件都沒有做到(SpringCloud Config
、Nacos
, Apollo待驗(yàn)證
)。如:獲取變化的配置 test
更新前為 123
,更新后為 111
。
SpringCloud Config
、Nacos
、 Apollo待驗(yàn)證
配置更新都是將整個(gè)配置文件推送給服務(wù)進(jìn)行配置對(duì)比結(jié)果進(jìn)行更新。這個(gè)階段用戶無法從程序中獲取更新的內(nèi)容。
為了實(shí)現(xiàn)這個(gè)擴(kuò)展功能點(diǎn),更新結(jié)果可以讓程序感知。 在這個(gè)階段用戶通過code可以實(shí)現(xiàn)配置監(jiān)聽, 監(jiān)聽到某個(gè)配置變化做其他操作等。
示例: 獲取到推送配置變化, 感知到 test
發(fā)生變化, 做更新同步數(shù)據(jù)操作等等。
感知結(jié)果集如:
{ `被更新的配置key`:{ before: `原來的值`, after: `更新后的值` }, `被更新的配置key`:{ before: `原來的值`, after: `更新后的值` } }
ps: 實(shí)際version版本請(qǐng)使用最新版
<dependency> <groupId>com.purgeteam</groupId> <artifactId>dynamic-config-spring-boot-starter</artifactId> <version>0.1.0.RELEASE</version> </dependency>
當(dāng)然實(shí)際情況要結(jié)合添加動(dòng)態(tài)配置依賴包 SpringCloud Config
、 Nacos
、 Apollo
。
dynamic-config-spring-boot-starter
模塊不包含以上依賴, 需要自行添加。
簡(jiǎn)介: 開啟這個(gè)特性注解,具備配置推送更新監(jiān)聽能力。
啟動(dòng)類添加 @EnableDynamicConfigEvent
注解開啟配置變化監(jiān)聽功能。
@EnableDynamicConfigEvent @SpringBootApplication public class DynamicConfigSpringBootApplication { public static void main(String[] args) { SpringApplication.run(DynamicConfigSpringBootApplication.class, args); } }
創(chuàng)建 NacosListener
(名稱隨意) 實(shí)現(xiàn) ApplicationListener<ActionConfigEvent>#onApplicationEvent
方法
@Slf4j @Component public class NacosListener implements ApplicationListener<ActionConfigEvent> { @Override public void onApplicationEvent(ActionConfigEvent event) { log.info("接收事件"); log.info(event.getPropertyMap().toString()); } }
在 NacosListener#onApplicationEvent
方法里獲取目標(biāo)值, 作相應(yīng)的邏輯處理。
ActionConfigEvent event:
public class ActionConfigEvent extends ApplicationEvent { // 事件說明 private String eventDesc; // 更新變化結(jié)果集 private Map<String, HashMap> propertyMap; ... }
ActionConfigEvent
主要包含 Map<String, HashMap> propertyMap;
, 從這里可以獲取更新變化結(jié)果, propertyMap結(jié)構(gòu)如下:
{ `被更新的配置key`:{ before: `原來的值`, after: `更新后的值` }, `被更新的配置key`:{ before: `原來的值`, after: `更新后的值` } }
ps: 示例為 Nacos
其它配置中心無差別。
原始配置:
test.age=18 user.name=purgeyao
修改配置:
# test.age 將18更新為19 test.age=19 user.name=purgeyao
在 NacosListener#onApplicationEvent
方法加入端點(diǎn)調(diào)試觀察 ActionConfigEvent
對(duì)象參數(shù)。
更新的 test.age
已經(jīng)被記錄在了 ActionConfigEvent.propertyMap
里了, 從 18 更新為 19。
控制臺(tái)打印:
2019-10-17 10:44:09.221 INFO 54054 --- [-10.1.1.97_8848] c.p.dynamic.config.demo.NacosListener : 接收事件 2019-10-17 10:45:19.752 INFO 54054 --- [-10.1.1.97_8848] c.p.dynamic.config.demo.NacosListener : {test.age={before=18, after=19}}
上述功能基于 Nacos
、 SpringCloud Config
或基于 SpringCloud Config
之上構(gòu)建的配置中心都可以使用, 其他配置中心待驗(yàn)證。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。