专栏首页码匠的流水账聊聊NacosDiscoveryHealthIndicatorAutoConfiguration
原创

聊聊NacosDiscoveryHealthIndicatorAutoConfiguration

本文主要研究一下NacosDiscoveryHealthIndicatorAutoConfiguration

NacosDiscoveryHealthIndicatorAutoConfiguration

nacos-spring-boot-project/nacos-discovery-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/discovery/actuate/autoconfigure/NacosDiscoveryHealthIndicatorAutoConfiguration.java

@Configuration
@ConditionalOnClass({ HealthIndicator.class })
@AutoConfigureBefore({ EndpointAutoConfiguration.class })
@AutoConfigureAfter(NacosDiscoveryAutoConfiguration.class)
@ConditionalOnEnabledHealthIndicator(NacosDiscoveryConstants.ENDPOINT_PREFIX)
public class NacosDiscoveryHealthIndicatorAutoConfiguration {
​
    @Bean
    @ConditionalOnMissingBean
    public NacosDiscoveryHealthIndicator nacosDiscoveryHealthIndicator() {
        return new NacosDiscoveryHealthIndicator();
    }
​
}
  • NacosDiscoveryHealthIndicatorAutoConfiguration注册了NacosDiscoveryHealthIndicator

NacosDiscoveryHealthIndicator

nacos-spring-boot-project/nacos-discovery-spring-boot-actuator/src/main/java/com/alibaba/boot/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java

public class NacosDiscoveryHealthIndicator 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 (NamingService namingService : nacosServiceFactory.getNamingServices()) {
            if (namingService instanceof NacosServiceMetaData) {
                NacosServiceMetaData nacosServiceMetaData = (NacosServiceMetaData) namingService;
                Properties properties = nacosServiceMetaData.getProperties();
                builder.withDetail(
                        JSON.toJSONString(
                                PropertiesUtils.extractSafeProperties(properties)),
                        namingService.getServerStatus());
            }
            if (!namingService.getServerStatus().equalsIgnoreCase(UP_STATUS)) {
                builder.down();
            }
        }
    }
}
  • NacosDiscoveryHealthIndicator继承了AbstractHealthIndicator,其doHealthCheck方法会遍历namingService,如果namingService为NacosServiceMetaData则将properties的json作为key,serverStatus作为value填充到detail中;接着判断其serverStatus是否为up,不是的话则标记为down

小结

NacosDiscoveryHealthIndicatorAutoConfiguration注册了NacosDiscoveryHealthIndicator;NacosDiscoveryHealthIndicator继承了AbstractHealthIndicator,其doHealthCheck方法会遍历namingService,如果namingService为NacosServiceMetaData则将properties的json作为key,serverStatus作为value填充到detail中;接着判断其serverStatus是否为up,不是的话则标记为down

doc

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Linux] 使用openssl实现RSA非对称加密

    参数:genrsa 生成密钥 -out 输出到文件 rsa_private_key.pem 文件名 1024 长度

    陶士涵
  • [javaSE] 反射-动态加载类

    陶士涵
  • java之spring mvc之ajax

    github地址:https://github.com/Vincent-yuan/springmvc_ajax

    Vincent-yuan
  • [android] 与PHP的session进行交互demo

    从MainActivity跳转到MailIndexActivity,第一个请求接口设置session,第二个activity请求接口获取session

    陶士涵
  • java之spring之helloword

    6.在spring_helloword项目下,添加 名为test的source file,和SpringTest.java文件

    Vincent-yuan
  • java之spring mvc之Restful风格开发及相关的配置

    传统 : url : http://localhost:8080/usersys/delete.do?user.id=12

    Vincent-yuan
  • java之spring mvc之初始spring mvc

    Vincent-yuan
  • 通俗易懂设计模式解析——单例模式

      在上一节中我们对设计模式进行了一定的介绍及分类。设计模式分为创建型、结构型、行为型。创建型模式——主要负责对象的创建。结构型职责——主要负责处理类与对象的组...

    小世界的野孩子
  • java之aop

    1.AOP:aspect orientied programming 面向切面编程。就是横向编程。

    Vincent-yuan
  • java之hibernate之hibernate缓存

    3.Hibernate提供了缓存来提高效率。hibernate缓存分为:一级缓存,二级缓存,查询缓存。

    Vincent-yuan

扫码关注云+社区

领取腾讯云代金券