-
Notifications
You must be signed in to change notification settings - Fork 1.4k
如何自定义高级配置订阅功能
HaojunRen edited this page May 31, 2024
·
4 revisions
自定义高级配置订阅功能可以通过框架自身带有的统一配置订阅执行器来实现
统一配置订阅执行器,基于Nacos、Apollo、Consul、Etcd、Redis、Zookeeper六种配置中心,通过封装适配成同样的写法,通过切换继承类,可切换配置中心,无须修改其它代码
Spring Cloud配置动态刷新机制固化在一个比较单一的场景(例如,通过@Value方式)里,无法满足更灵活更高级的订阅场景,例如,Spring Cloud Gateway和Zuul网关通过改变配置中心的路由信息无法动态刷新路由路径
本框架提供更简单灵活的实现方式,以Nacos为例子,使用者先确定订阅的Group和DataId,在Nacos界面填入这两个参数对应的配置内容,然后通过回调方法处理业务逻辑。具体使用方式,如下
// 把继承类(extends)换成如下任何一个,即可切换配置中心,代码无需任何变动
// 1. NacosProcessor
// 2. ApolloProcessor
// 3. ConsulProcessor
// 4. EtcdProcessor
// 5. ZookeeperProcessor
// 6. RedisProcessor
// Group和DataId自行决定,需要注意
// 1. 对于Nacos、Redis、Zookeeper配置中心,Group和DataId需要和界面相对应
// 2. 对于Apollo、Consul、Etcd配置中心,Key的格式为Group-DataId
// 3. 千万不能和蓝绿灰度发布的Group和DataId冲突
public class MyConfigProcessor extends NacosProcessor {
private static final Logger LOG = LoggerFactory.getLogger(MyConfigProcessor.class);
// private String group = "DEFAULT_GROUP";
private String group = "nepxion";
@Value("${" + DiscoveryConstant.SPRING_APPLICATION_NAME + "}")
private String dataId;
@Override
public String getGroup() {
return group;
}
@Override
public String getDataId() {
return dataId;
}
@Override
public String getDescription() {
// description为日志打印显示而设置,作用是帮助使用者在日志上定位订阅是否在执行
return "My operation";
}
@Override
public void callbackConfig(String config) {
// config为配置中心对应键值的内容变更,使用者可以根据此变更对业务模块做回调处理
LOG.info(config);
}
}
在配置类里@Bean方式进行执行器类创建
@Bean
public MyConfigProcessor myConfigProcessor() {
return new MyConfigProcessor();
}
具体用法和配置,请参考统一配置订阅执行器指南示例,分支为6.x.x-config
2017-2050 ©Nepxion Studio Apache License
- 如何对接Foundation基础平台实施收敛集成
- 如何对接DevOps运维平台实施流量管控
- 如何部署对接DevOps运维平台的控制台
- 如何对接DevOps运维平台执行半自动化蓝绿灰度发布
- 如何使用DevOps运维平台对接的公共接口
- 如何设计全链路智能编排高级蓝绿灰度发布界面
- 如何实现Windows10下GraalVM本地镜像化
- 蓝绿灰度发布
- 流量染色
- 隔离路由
- 故障转移
- 多活单元化
- 限流熔断降级权限
- 网关动态路由
- 可观测监控
- 如何操作配置中心
- 如何理解框架开关配置
- 如何理解规则策略里内容格式配置
- 如何操作网关和服务的蓝绿灰度发布规则策略配置
- 如何操作网关动态路由规则策略配置
- 如何操作Sentinel规则策略配置
- 如何实施规则策略配置和业务配置在配置中心的合并和分离
- 如何理解自动扫描目录
- 如何自定义流量管控
- 如何自定义实现组合式的防护
- 如何自定义高级配置订阅功能
- 如何自定义订阅框架事件
- 如何自定义解决业务自身跨线程上下文切换的问题
- 如何自定义重用框架内置的Swagger模块
- 如何自定义Header全链路传递
- 如何遵循Nepxion Discovery网关标准实现对其它网关全链路流量管控的二次开发
- 如何遵循Nepxion Discovery服务标准实现对消息队列等其它中间件全链路流量管控的二次开发