javascript
SpringCloudConfig整合Nacos
SpringCloudConfig 的作用是可以進行配置的更新處理,這個的確是很好,但是原始的SpringCloudNetflix 架構所提供的動態的抓取配置實在是太繁瑣了,包括還要使用到SpringCloudBus進行Actuator處理
SpringCloudAlibaba套件之中是基于Nacos 實現的服務管理,Nacos里面有一個動態的監聽配置,只要你在Nacos之中定義了配置項,那么就可以在程序里面動態抓取(不再需要config-server,不再需要springcloudbus)。
1.1、【microcloud項目】創建“provider-message-8201”模塊
build.gradle
project(":provider-message-8201") { // 消息微服務dependencies {implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-client')// 以下的依賴庫為Nacos注冊中心所需要的依賴配置implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除舊版本的Nacos依賴}implementation(libraries.'nacos-client') // 引入與當前的Nacos匹配的依賴庫} }1.2、【provider-message-8201】配置文件
application.yml
server: # 服務端配置port: 8201 # 8201端口 spring:application: # 配置應用信息name: message.provider # 是微服務的名稱cloud: # Cloud配置nacos: # Nacos注冊中心配置discovery: # 發現服務weight: 80service: ${spring.application.name} # 使用微服務的名稱作為注冊的服務名稱server-addr: nacos-server:8848 # Nacos服務地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空間IDgroup: MICROCLOUD_GROUP # 一般建議大寫cluster-name: MuyanCluster # 配置集群名稱metadata: # 根據自身的需要配置元數據version: 1.0 # 自定義元數據項register-enabled: truebootstrap.yml
spring: # Spring配置項application:name: message.provider # 應用名稱cloud: # SpringCloud配置項nacos: # Nacos注冊中心的配置config: # gRPC通訊配置server-addr: nacos-server:8848 # Nacos地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空間IDgroup: MICROCLOUD_GROUP # 一般建議大寫cluster-name: MuyanCluster # 配置集群名稱discovery: # 發現服務weight: 80service: ${spring.application.name} # 使用微服務的名稱作為注冊的服務名稱server-addr: nacos-server:8848 # Nacos服務地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空間IDgroup: MICROCLOUD_GROUP # 一般建議大寫cluster-name: MuyanCluster # 配置集群名稱metadata: # 根據自身的需要配置元數據version: 1.0 # 自定義元數據項1.3、【provider-message-8201】MessageAction
package com.yootk.provider.action;import com.yootk.provider.vo.MessageConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.HashMap; import java.util.Map;@RestController @RequestMapping("/provider/message/*") public class MessageAction {@Autowiredprivate MessageConfig messageConfig;@RequestMapping("config")public Object config() {Map<String, Object> result = new HashMap<>();result.put("flag", this.messageConfig.getFlag());result.put("content", this.messageConfig.getContent());return result;} }1.4、【provider-message-8201】MessageConfig
package com.yootk.provider.vo;import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.stereotype.Component;@Data @Component // 必須添加為Bean @RefreshScope // 動態加載 public class MessageConfig {@Value("${yootk.message.flag}") // 配置文件的加載KEYprivate String flag;@Value("${yootk.message.content}") // 配置文件的加載KEYprivate String content; }1.5、【provider-message-8201】StartMessageApplication
package com.yootk.provider;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication @EnableDiscoveryClient public class StartMessageApplication {public static void main(String[] args) {SpringApplication.run(StartMessageApplication.class, args);} }2、【Nacos控制臺】既然現在不再通過GITLab存儲了,那么就可以將所有的存儲項保存在Nacos里面
message.provider-dev.yml
message.provider-test.yml
yootk:message:flag: testcontent: yootk222message.provider-prod.yml
yootk:message:flag: prodcontent: yootk333
3、【provider-message-8201子模塊】修改bootstrap.yml配置文件:
spring.cloud.nacos.config.file-extension
speing.peofiles.active
程序啟動日志
此時通過日志信息可以發現,指定的配置項已經開啟了訂閱,那么就意味著只要修改了Nacos里面的配置項的內容,當前的消息服務就可以獲取到最新的配置了。
當Nacos里面成功的修改了配置項的內容之后,對應的微服務的后臺會有日志信息的輸出:
Refresh keys changed: [yootk.message.content]
這個時候不再需要繁瑣的ConfigServer加載,也不再需要各種的Actuator處理操作,更不需要使用到消息組件,而整個的配置可以通過可視化的環境進行方便的維護,所以技術不能夠停止更新,哪怕現在技術已經跑通了,也不要停止思考。
總結
以上是生活随笔為你收集整理的SpringCloudConfig整合Nacos的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软商店网页版换新颜,拥抱现代化的 We
- 下一篇: 国庆档票房超27亿元 《坚如磐石》居首