解决 nacos 在 Spring boot admin 中不能监控到新服务注册的问题

简介

笔者最近在新公司开始重新架构公司的微服务,在注册中心选择了 nacos,上家公司 Eureka 遇到了一些坑,想尝试 nacos。整个微服务也会以 Mica 作为微服务核心,感兴趣的朋友可以查看码云链接:https://gitee.com/596392912/mica

问题

在 nacos 和 Spring boot admin 整合后发现只有在 admin 启动之前的服务才能被监控到。点进去发现 Spring boot admin 是依赖 HeartbeatEvent 事件进行的新服务的注册。
解决 nacos 在 Spring boot admin 中不能监控到新服务注册的问题

我们可以看到 Eureka 和 Consul 的 Client 都会发送该事件。

Eureka

解决 nacos 在 Spring boot admin 中不能监控到新服务注册的问题

Consul

解决 nacos 在 Spring boot admin 中不能监控到新服务注册的问题

解决问题

本考虑自行去实现并提交给官方,github clone spring-cloud-alibaba 到本地发现代码有变动,官方已经实现了该功能。
解决 nacos 在 Spring boot admin 中不能监控到新服务注册的问题

但是官方尚未发版,所以笔者考虑把相关代码拷贝到自己的项目中。

首先拷贝 NacosWatch

解决 nacos 在 Spring boot admin 中不能监控到新服务注册的问题

注意此处有报错,可以写死为下面的值或者自定义 properties 配置。

/**
 * watch delay,duration to pull new service from nacos server.
 */
private long watchDelay = 30000;

然后添加  NacosWatch 自动化相关代码:

/**
 * NacosWatch 自动配置
 *
 * @author L.cm
 */
@Configuration
public class NacosWatchAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnProperty(value = "spring.cloud.nacos.discovery.watch.enabled", matchIfMissing = true)
    public NacosWatch nacosWatch(NacosDiscoveryProperties nacosDiscoveryProperties) {
        return new NacosWatch(nacosDiscoveryProperties);
    }
}

重启 Spring boot admin,然后再依次启动其他服务,发现新服务都自动同步了到了 Spring boot admin 中,大功告成!

开源推荐

上一篇:mica-http 完全使用指南【一】


下一篇:Spring 5 core 中的 @NonNull 是个什么鬼?!