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: 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相关推荐
- java注册中心nacos_spring-cloud整合nacos做注册中心
前面讲了spring-cloud整合nacos做配置中心,这节讲一下nacos做注册中心 至于注册中心是什么,我就不讲了,不了解的可以去问度娘 下面我就直接开始了,也是比较简单的: 1.引入依赖 1. ...
- 【gateway系列】手把手教你gateway整合nacos注册中心
目录 准备 Gateway服务 Member服务 运行 往期相关推荐: 网关路由规则和nacos配置中心实战: 一步步带你学习gateway路由规则实践 nacos整合配置中心 准备 准备引入相关依赖 ...
- 整合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 ...
- Spring Boot整合Nacos时遇到 java.lang.IllegalStateException: Context has been already given a name 的解决办法
问题概述 在进行项目开发过程中,通过Spring Boot整合Alibaba Nacos的服务注册与发现和配置中心时,遇到个梗,启动时打印出一串错误日志信息 " Failed to rena ...
- SpringBoot整合nacos实现参数配置
SpringBoot整合nacos实现参数配置 1.nacos安装 2.项目配置 配置文件 3.nacos配置 4.启动 1.nacos安装 首先,这里的版本号用的是linux的1.4.1 链接:ht ...
- SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig
SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig 前言 一. 尝试解决Bug的几种不合适方案 1.1 添加 ...
- Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos /(非阿里组件))
Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos)(非阿里组件) 回溯 Gateway 整合 nacos 方式一(复杂/灵活/常用) 方式 ...
- Spring boot整合nacos注册中心/配置中心报错:java.lang.IllegalArgumentException: no server available
1.问题描述 我是近期在使用Springboot整合nacos,由于springboot和springcloud都是用最新版本,啪的一下,很快啊,就出现问题了,于是自己把版本降下来了,年轻人不讲武德降 ...
- Dubbo基础专题——第四章(Dubbo整合Nacos分析细节点)
应广大的读者要求,也是公司目前需要一些支持,我就自己亲身搭建一个Springboot+nacos+dubbo的框架和项目,并演示dubbo面对一些系统的 业务场合,应该怎么去做支持,文章中我会先贴出代 ...
最新文章
- MyBatis知多少(12)私有数据库
- C#反射技术之一动态读取和设置对象的属性值
- RequestDispatcher提供两个方法:forward,include有什么区别
- 解决win10使用GPU跑程序遇到的一系列报错
- js中setAttribute 的兼容性
- Linux防火墙-netfilter filter表案列与nat表应用
- grep sed awk三剑客详解
- linux虚拟化桌面协议,桌面虚拟化传输协议之android spice
- 00后没玩过的电脑编程游戏
- 学习:大文件统计与排序
- c 语言编程游戏代码大全,C语言编程游戏代码
- matlab sa函数的傅里叶变换,通信第三章常见函数的傅里叶变换.ppt
- 从特斯拉AI团队学到的九条方法论
- rn在java中什么意思,RN150中RN是什么意思
- OJ每日一练——细菌个数
- 停车位检测方法研究综述
- Hadoop的数据压缩
- linux一些简单的操作命令
- GD32F130FXP6学习笔记六:cortex-m3系列的ADC初识
- python实现http请求并发_Python复习笔记(十)Http协议--Web服务器-并发服务器
热门文章
- java文件损坏_java – 损坏的文件处理
- django html跳转页面跳转页面,Django html单击打开另一个html页面
- 多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程
- python3.7和3.5_Ubuntu更新python3.5到python3.7
- ubuntu14.04安装linux公社,Ubuntu 14.04下安装IT++
- Codeforces Round #737 (Div. 2) D. Ezzat and Grid 线段树动态开点
- 2019 ICPC Asia Nanchang Regional And and Pair 组合数学
- Codeforces Global Round 12 C1 C2. Errich-Tac-Toe 思维构造 好题
- Knowledge Test about Match
- C Looooops POJ - 2115