建设银行代发工资清单网站,网络推广公司简介,怎样建商业网站,frontpage做网站教程背景
如果想在运行过程中想基于nacos数据变更做一些业务#xff0c;比如想在运行过程中变更日志的级别#xff0c;那么我们可以扩展nacos的监听。
步骤
定义一个配置类#xff0c;用NacosConfigListener标记需要触发的方法#xff0c;并用dataId标记需要监听的文件。如下…背景
如果想在运行过程中想基于nacos数据变更做一些业务比如想在运行过程中变更日志的级别那么我们可以扩展nacos的监听。
步骤
定义一个配置类用NacosConfigListener标记需要触发的方法并用dataId标记需要监听的文件。如下
/*** 日志级别 nacos动态调整*/
Slf4j
Configuration
public class LoggingLevelConfig {/*** 动态刷新*/NacosConfigListener(dataId Constants.CONFIG_FILE_NAME)public void refresh(String msg) {}
}
需要注意的是这个方法必须要有一个String类型参数否则不会生效这个参数就是变更后的文件
解析变更内容 这里有两个思路 第一个是自己解析字符串第二个就是利用nacos自动刷新的机制定义一个配置属性类然后从这个类里面获取最新的属性值这里要注意的是被 NacosConfigListener标记的方法和nacos自动刷新的先后顺序是不能被保证的我的思路是开启一个新线程然后可以Sleep几秒后从配置类中读取最新的值。
所以最终的代码
Slf4j
Configuration
public class DemoLoggingLevelConfig {Resourceprivate SomePropertiesConfig propertiesConfig;/*** LoggingSystem*/Resourceprivate LoggingSystem loggingSystem;/*** 通用线程池*/Resource(name commonTaskExecutor)private ThreadPoolTaskExecutor commonTaskExecutor;/*** 动态刷新*/NacosConfigListener(dataId Constants.FILE_NAME)public void refresh(String msg) {// 线程池处理多线程taskExecutor.submit(() - {try {Thread.sleep(4000);log.info(获取到最新的值{}, propertiesConfig.getDynamicLogger());
// 通过loggingSystem} catch (Exception e) {log.error(异常{}, e.getLocalizedMessage(), e);}});}
}over~