聊聊NacosConfigHealthIndicatorAutoConfiguration
- 2019 年 10 月 11 日
- 筆記
序
本文主要研究一下NacosConfigHealthIndicatorAutoConfiguration

NacosConfigHealthIndicatorAutoConfiguration
nacos-spring-boot-project/nacos-config-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/actuate/autoconfigure/NacosConfigHealthIndicatorAutoConfiguration.java
@Configuration @ConditionalOnClass({ HealthIndicator.class }) @AutoConfigureBefore({ EndpointAutoConfiguration.class }) @AutoConfigureAfter(NacosConfigAutoConfiguration.class) @ConditionalOnEnabledHealthIndicator(NacosConfigConstants.ENDPOINT_PREFIX) public class NacosConfigHealthIndicatorAutoConfiguration { @Bean @ConditionalOnMissingBean public NacosConfigHealthIndicator nacosConfigHealthIndicator() { return new NacosConfigHealthIndicator(); } }
- NacosConfigHealthIndicatorAutoConfiguration註冊了NacosConfigHealthIndicator
NacosConfigHealthIndicator
nacos-spring-boot-project/nacos-config-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/actuate/health/NacosConfigHealthIndicator.java
public class NacosConfigHealthIndicator extends AbstractHealthIndicator { @Autowired private ApplicationContext applicationContext; private static final String UP_STATUS = "up"; @Override protected void doHealthCheck(Health.Builder builder) throws Exception { builder.up(); NacosServiceFactory nacosServiceFactory = CacheableEventPublishingNacosServiceFactory.getSingleton(); for (ConfigService configService : nacosServiceFactory.getConfigServices()) { if (configService instanceof NacosServiceMetaData) { NacosServiceMetaData nacosServiceMetaData = (NacosServiceMetaData) configService; Properties properties = nacosServiceMetaData.getProperties(); builder.withDetail( JSON.toJSONString( PropertiesUtils.extractSafeProperties(properties)), configService.getServerStatus()); } if (!configService.getServerStatus().toLowerCase().equals(UP_STATUS)) { builder.down(); } } } }
- NacosConfigHealthIndicator繼承了AbstractHealthIndicator;它會從nacosServiceFactory獲取configService,判斷configService.getServerStatus()是否是up,不是則標記為down;對於NacosServiceMetaData類型的configService,則會獲取nacosServiceMetaData.getProperties()作為key,configService.getServerStatus()作為value寫入到health的details
小結
NacosConfigHealthIndicatorAutoConfiguration註冊了NacosConfigHealthIndicator;NacosConfigHealthIndicator繼承了AbstractHealthIndicator;它會從nacosServiceFactory獲取configService,判斷configService.getServerStatus()是否是up,不是則標記為down;對於NacosServiceMetaData類型的configService,則會獲取nacosServiceMetaData.getProperties()作為key,configService.getServerStatus()作為value寫入到health的details