SpringCloud使用Zookeeper作為配置中心的示例
在上一篇文章中介紹了Zookeeper作為注冊中心使用,在這篇文章中將介紹Zookeeper作為配置中心的使用,廢話不多說,直接上代碼。
相關(guān)依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>zkdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>zkdemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>2020.0.2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
配置文件application.yml
spring: application: name: zkdemo profiles: active: dev cloud: zookeeper: # Zookeeper服務(wù)器地址,集群使用逗號分隔 connect-string: localhost:2181 # 從Zookeeper中導(dǎo)入配置數(shù)據(jù) config: import: 'optional:zookeeper:' server: port: 8005
在Zookeeper中創(chuàng)建配置節(jié)點(diǎn)和數(shù)據(jù)
創(chuàng)建配置根節(jié)點(diǎn)/config:
[zk: localhost:2181(CONNECTED) 3] create /config Created /config
創(chuàng)建全局配置節(jié)點(diǎn)/config/application,/config/application節(jié)點(diǎn)下的配置所有服務(wù)都能使用。
[zk: localhost:2181(CONNECTED) 4] create /config/application Created /config/application
添加全局配置nickname1:
[zk: localhost:2181(CONNECTED) 5] create /config/application/nickname1 布禾 Created /config/application/nickname1
創(chuàng)建zkdemo服務(wù)dev環(huán)境的配置節(jié)點(diǎn)/config/zkdemo,dev,該節(jié)點(diǎn)的配置只能被特定服務(wù)的特定環(huán)境使用,當(dāng)該節(jié)點(diǎn)的配置和全局配置沖突時(shí),優(yōu)先使用該節(jié)點(diǎn)的配置:
[zk: localhost:2181(CONNECTED) 6] create /config/zkdemo,dev Created /config/zkdemo,dev
添加zkdemo服務(wù)dev環(huán)境配置nickname2:
[zk: localhost:2181(CONNECTED) 7] create /config/zkdemo,dev/nickname2 buhe Created /config/zkdemo,dev/nickname2
最終結(jié)構(gòu)如下:
測試類
@SpringBootTest class ZkdemoApplicationTests { @Value("${nickname1}") private String nickname1; @Value("${nickname2}") private String nickname2; @Test public void testZkConfig() { System.out.println("從application全局配置中讀取配置:nickname1=" + nickname1); System.out.println("從zkdemo服務(wù)配置中讀取配置:nickname2=" + nickname2); } }
輸出結(jié)果:
從application全局配置中讀取配置:nickname1=布禾
從zkdemo服務(wù)配置中讀取配置:nickname2=buhe
自定義Zookeeper配置
如果不想使用默認(rèn)的Zookeeper配置,可以在application.yml更改:
spring: cloud: zookeeper: config: enabled: true root: configuration default-context: apps profile-separator: '::'
enabled:將該值設(shè)置為false將禁用Zookeeper配置,默認(rèn)true。
root:配置根節(jié)點(diǎn)名稱,默認(rèn)為config。
default-context:全局配置節(jié)點(diǎn)名稱,默認(rèn)為application。
profile-separator:設(shè)置服務(wù)名和環(huán)境名稱之間的分隔符,默認(rèn)為英文逗號。
以上就是SpringCloud使用Zookeeper作為配置中心的示例的詳細(xì)內(nèi)容,更多關(guān)于使用Zookeeper作為配置中心的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決Mybatis?mappe同時(shí)傳遞?List?和其他參數(shù)報(bào)錯(cuò)的問題
在使用MyBatis時(shí),如果需要傳遞多個(gè)參數(shù)到SQL中,可以遇到參數(shù)綁定問題,解決方法包括使用@Param注解和修改mapper.xml配置,感興趣的朋友跟隨小編一起看看吧2024-09-09Springboot使用redisson?+?自定義注解實(shí)現(xiàn)消息的發(fā)布訂閱(解決方案)
Redisson是一個(gè)基于Redis的Java駐留內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory?Data?Grid)和分布式鎖框架,它提供了一系列的分布式Java對象和服務(wù),可以幫助開發(fā)者更方便地使用Redis作為數(shù)據(jù)存儲和分布式鎖的解決方案,感興趣的朋友跟隨小編一起看看吧2024-05-05Spring Cloud 中@FeignClient注解中的contextId屬性詳解
這篇文章主要介紹了Spring Cloud 中@FeignClient注解中的contextId屬性詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Flink開發(fā)IDEA環(huán)境搭建與測試的方法
這篇文章主要介紹了Flink開發(fā)IDEA環(huán)境搭建與測試的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03IDEA之項(xiàng)目run按鈕為灰色,無法運(yùn)行問題
這篇文章主要介紹了IDEA之項(xiàng)目run按鈕為灰色,無法運(yùn)行問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12在本地用idea連接虛擬機(jī)上的hbase集群的實(shí)現(xiàn)代碼
這篇文章主要介紹了在本地用idea連接虛擬機(jī)上的hbase集群的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10