in spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/refresh/NacosContextRefresher.java [114:153]
private void registerNacosListener(final String groupKey, final String dataKey) {
String key = NacosPropertySourceRepository.getMapKey(dataKey, groupKey);
Listener listener = listenerMap.computeIfAbsent(key,
lst -> new AbstractSharedListener() {
@Override
public void innerReceive(String dataId, String group,
String configInfo) {
log.info("[Nacos Config] Receive Nacos config change: dataId={}, group={}", dataKey,
groupKey);
refreshCountIncrement();
nacosRefreshHistory.addRefreshRecord(dataId, group, configInfo);
NacosSnapshotConfigManager.putConfigSnapshot(dataId, group,
configInfo);
NacosConfigRefreshEvent event = new NacosConfigRefreshEvent(this, null, "Refresh Nacos config");
event.setDataId(dataId);
event.setGroup(group);
applicationContext.publishEvent(
event);
if (log.isDebugEnabled()) {
log.debug(String.format(
"Publish Nacos config Refresh Event group=%s,dataId=%s,configInfo=%s",
group, dataId, configInfo));
}
}
});
try {
if (configService == null && configManager != null) {
configService = configManager.getConfigService();
}
configService.addListener(dataKey, groupKey, listener);
log.info("[Nacos Config] Listening config: dataId={}, group={}", dataKey,
groupKey);
}
catch (NacosException e) {
log.warn(String.format(
"register fail for nacos listener ,dataId=[%s],group=[%s]", dataKey,
groupKey), e);
}
}