java如何取nacos配置的list_Java教程:nacos入门系列之配置中心

配置的发布与订阅

我们先来看看如何使用nacos提供的api来实现配置的发布与订阅

发布配置:

public class ConfigPub {

public static void main(String[] args) throws NacosException {

final String dataId="test";

final String group="DEFAULT_GROUP";

ConfigService configService= NacosFactory.createConfigService("localhost:8848");

configService.publishConfig(dataId,group,"test config body");

}

}

订阅配置:

public static void main(String[] args) throws NacosException, InterruptedException {

final String dataId="test";

final String group="DEFAULT_GROUP";

ConfigService configService= NacosFactory.createConfigService("localhost:8848");

configService.addListener(dataId, group, new Listener() {

@Override

public Executor getExecutor() {

return null;

}

@Override

public void receiveConfigInfo(String configInfo) {

System.out.println("receiveConfigInfo:"+configInfo);

}

});

Thread.sleep(Integer.MAX_VALUE);

}

}

根据上面的demo可以看到通过dataId和group可以定位一个配置文件。

深入了解配置发布

1-发布的配置信息会通过http请求调用具体的服务

agent.httpPost(url, headers, params, encode, POST_TIMEOUT);

服务类为 ConfigController:处理配置相关的http请求

persistService

.insertOrUpdateTag(configInfo, tag, srcIp, srcUser, time, false);

EventDispatcher.fireEvent(

new ConfigDataChangeEvent(false, dataId, group, tenant, tag,

time.getTime()));

可以看到发布的配置首先会进行持久化,然后会触发变更通知。

持久化这里就不做分析,我们来看看fireEvent这个方法:

EventDispatcher.fireEvent:

static public void fireEvent(Event event) {

if (null == event) {

throw new IllegalArgumentException("event is null");

}

for (AbstractEventListener listener : getEntry(event.getClass()).listeners) {

t

你可能感兴趣的:(java如何取nacos配置的list_Java教程:nacos入门系列之配置中心)