前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊NacosConfigHealthIndicatorAutoConfiguration

聊聊NacosConfigHealthIndicatorAutoConfiguration

作者头像
code4it
发布2019-10-09 16:03:43
4720
发布2019-10-09 16:03:43
举报
文章被收录于专栏:码匠的流水账

本文主要研究一下NacosConfigHealthIndicatorAutoConfiguration

NacosConfigHealthIndicatorAutoConfiguration

nacos-spring-boot-project/nacos-config-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/actuate/autoconfigure/NacosConfigHealthIndicatorAutoConfiguration.java

代码语言:javascript
复制
@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

代码语言:javascript
复制
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

doc

  • NacosConfigHealthIndicatorAutoConfiguration
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NacosConfigHealthIndicatorAutoConfiguration
  • NacosConfigHealthIndicator
  • 小结
  • doc
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档