天天看點

解決 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

中,大功告成!

開源推薦