Skip to content

如何自定义高级配置订阅功能

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

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally