package com.nikooh.manage.config;
import com.alibaba.fastjson.JSON;
import com.ctrip.framework.apollo.core.ConfigConsts;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @Description: <p>apollo配置更新监听</p>
* @Author: jiyangtang Email: jiyang.tang4@wework.com
* @Date: 2021/06/24 : 下午2:12
*/
@Slf4j
@Component
public class ApolloRefreshConfig implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Autowired
private RefreshScope refreshScope;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
/**
* 监听Apollo配置更新事件实现热加载
* 默认监听application namespace中的配置变化,如有其他namespace直接往后加
*
* @param changeEvent
*/
@ApolloConfigChangeListener({ConfigConsts.NAMESPACE_APPLICATION, "innovation.wwChina-base"})
public void apolloRefresh(ConfigChangeEvent changeEvent) {
log.info(">>>>>>>>>> apollo properties has changed! changeEvent:[{}] <<<<<<<<<<", JSON.toJSONString(changeEvent));
applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));
refreshScope.refreshAll();
}
}
apollo配置中心热加载实现
最新推荐文章于 2023-06-15 17:55:29 发布