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: true

bootstrap.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

yootk:message:flag: devcontent: yootk111

message.provider-test.yml

yootk:message:flag: testcontent: yootk222

message.provider-prod.yml

yootk:message:flag: prodcontent: yootk333




3、【provider-message-8201子模块】修改bootstrap.yml配置文件:

spring.cloud.nacos.config.file-extension
speing.peofiles.active

spring: # Spring配置项application:name: message.provider # 应用名称profiles:active: dev # 使用的profile配置项cloud: # SpringCloud配置项nacos: # Nacos注册中心的配置config: # gRPC通讯配置server-addr: nacos-server:8848 # Nacos地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空间IDgroup: MICROCLOUD_GROUP # 一般建议大写cluster-name: MuyanCluster # 配置集群名称file-extension: yml # 配置文件类型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 # 自定义元数据项

程序启动日志

此时通过日志信息可以发现,指定的配置项已经开启了订阅,那么就意味着只要修改了Nacos里面的配置项的内容,当前的消息服务就可以获取到最新的配置了。

当Nacos里面成功的修改了配置项的内容之后,对应的微服务的后台会有日志信息的输出:
Refresh keys changed: [yootk.message.content]

这个时候不再需要繁琐的ConfigServer加载,也不再需要各种的Actuator处理操作,更不需要使用到消息组件,而整个的配置可以通过可视化的环境进行方便的维护,所以技术不能够停止更新,哪怕现在技术已经跑通了,也不要停止思考。

SpringCloudConfig整合Nacos相关推荐

  1. java注册中心nacos_spring-cloud整合nacos做注册中心

    前面讲了spring-cloud整合nacos做配置中心,这节讲一下nacos做注册中心 至于注册中心是什么,我就不讲了,不了解的可以去问度娘 下面我就直接开始了,也是比较简单的: 1.引入依赖 1. ...

  2. 【gateway系列】手把手教你gateway整合nacos注册中心

    目录 准备 Gateway服务 Member服务 运行 往期相关推荐: 网关路由规则和nacos配置中心实战: 一步步带你学习gateway路由规则实践 nacos整合配置中心 准备 准备引入相关依赖 ...

  3. 整合nacos配置中心启动报c.a.c.n.c.NacosPropertySourceBuilder: 101 - get data from Nacos error,dataId:xxx.yml

    场景: SpringBoot项目整合nacos配置中心,开启nacos-server端的权限控制后,项目启动报如下错误: c.a.c.n.c.NacosPropertySourceBuilder: 1 ...

  4. Spring Boot整合Nacos时遇到 java.lang.IllegalStateException: Context has been already given a name 的解决办法

    问题概述 在进行项目开发过程中,通过Spring Boot整合Alibaba Nacos的服务注册与发现和配置中心时,遇到个梗,启动时打印出一串错误日志信息 " Failed to rena ...

  5. SpringBoot整合nacos实现参数配置

    SpringBoot整合nacos实现参数配置 1.nacos安装 2.项目配置 配置文件 3.nacos配置 4.启动 1.nacos安装 首先,这里的版本号用的是linux的1.4.1 链接:ht ...

  6. SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig

    SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig 前言 一. 尝试解决Bug的几种不合适方案 1.1 添加 ...

  7. Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos /(非阿里组件))

    Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos)(非阿里组件) 回溯 Gateway 整合 nacos 方式一(复杂/灵活/常用) 方式 ...

  8. Spring boot整合nacos注册中心/配置中心报错:java.lang.IllegalArgumentException: no server available

    1.问题描述 我是近期在使用Springboot整合nacos,由于springboot和springcloud都是用最新版本,啪的一下,很快啊,就出现问题了,于是自己把版本降下来了,年轻人不讲武德降 ...

  9. Dubbo基础专题——第四章(Dubbo整合Nacos分析细节点)

    应广大的读者要求,也是公司目前需要一些支持,我就自己亲身搭建一个Springboot+nacos+dubbo的框架和项目,并演示dubbo面对一些系统的 业务场合,应该怎么去做支持,文章中我会先贴出代 ...

最新文章

  1. MyBatis知多少(12)私有数据库
  2. C#反射技术之一动态读取和设置对象的属性值
  3. RequestDispatcher提供两个方法:forward,include有什么区别
  4. 解决win10使用GPU跑程序遇到的一系列报错
  5. js中setAttribute 的兼容性
  6. Linux防火墙-netfilter filter表案列与nat表应用
  7. grep sed awk三剑客详解
  8. linux虚拟化桌面协议,桌面虚拟化传输协议之android spice
  9. 00后没玩过的电脑编程游戏
  10. 学习:大文件统计与排序
  11. c 语言编程游戏代码大全,C语言编程游戏代码
  12. matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
  13. 从特斯拉AI团队学到的九条方法论
  14. rn在java中什么意思,RN150中RN是什么意思
  15. OJ每日一练——细菌个数
  16. 停车位检测方法研究综述
  17. Hadoop的数据压缩
  18. linux一些简单的操作命令
  19. GD32F130FXP6学习笔记六:cortex-m3系列的ADC初识
  20. python实现http请求并发_Python复习笔记(十)Http协议--Web服务器-并发服务器

热门文章

  1. java文件损坏_java – 损坏的文件处理
  2. django html跳转页面跳转页面,Django html单击打开另一个html页面
  3. 多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程
  4. python3.7和3.5_Ubuntu更新python3.5到python3.7
  5. ubuntu14.04安装linux公社,Ubuntu 14.04下安装IT++
  6. Codeforces Round #737 (Div. 2) D. Ezzat and Grid 线段树动态开点
  7. 2019 ICPC Asia Nanchang Regional And and Pair 组合数学
  8. Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题
  9. Knowledge Test about Match
  10. C Looooops POJ - 2115