需要引入依赖
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
然后添加nacos类对指定地址的开关进行监听,其中group和dataId分别对应nacos中的对应内容
@Component
public class NacosUtil {
public static Integer testButton;
//是否启用nacos,在配置文件中配置
@Value("${nacos.button}")
private String nacosButton;
@PostConstruct
public void initNacos(){
if (Long.valueOf(nacosButton).equals(1L)) {
logger.biz("[nacos]:nacosbutton equals 1L");
//指定连接到的服务器地址,可以是本地也可以是其他服务器
String serverAddr = "";
//自己指定的组
String group = "test-group";
// 示例
try {
//自己指定的dataId
String dataId = "test-dataId";
//从nacos中获取的开关服务
ConfigService configService = getConfigService(serverAddr);
//本方法启动的时候获取内容
String content = configService.getConfig(dataId, group, 5000);
logger.biz("content:" + content);
JSONObject object = JSONObject.parseObject(content);
button = object.getString("test-button");
if("1".equals(button)){
Constants.TEST_BUTTON = 1;
} else {
Constants.TEST_BUTTON = 0;
}
//监听器,一旦nacos中相应值改变,则进行相应开关状态改变
configService.addListener(dataId, group, new Listener() {
@Override
public void receiveConfigInfo(String configInfo) {
logger.biz("[Listener]:" + configInfo);
JSONObject object = JSONObject.parseObject(configInfo);
button = object.getInteger("test-button");
if("1".equals(button)){
Constants.TEST_BUTTON = 1;
} else {
Constants.TEST_BUTTON = 0;
}
}
@Override
public Executor getExecutor() {
return null;
}
});
} catch (NacosException e) {
logger.error("获取功能开关配置失败:" + e, e.getMessage());
}
}
}
/**
* 根据地址获取ConfigService
*
* @param serverAddr 地址
* @return 返回获取到的ConfigService
* @throws NacosException 抛出异常
*/
private ConfigService getConfigService(String serverAddr) throws NacosException {
Properties properties = new Properties();
properties.put("serverAddr", serverAddr);
return NacosFactory.createConfigService(properties);
}
版权声明:本文为zoelee_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。