解決 nacos 在 Spring boot admin 中不能監控到新服務註冊的問題

簡介

筆者最近在新公司開始從新架構公司的微服務,在註冊中心選擇了 nacos,上家公司 Eureka 遇到了一些坑,想嘗試 nacos。整個微服務也會以 Mica 做爲微服務核心,感興趣的朋友能夠查看碼雲連接:https://gitee.com/596392912/mica[1] 。git

問題

在 nacos 和 Spring boot admin 整合後發現只有在 admin 啓動以前的服務才能被監控到。點進去發現 Spring boot admin 是依賴 HeartbeatEvent 事件進行的新服務的註冊。
圖片github

咱們能夠看到 Eureka 和 Consul 的 Client 都會發送該事件。spring

Eureka

圖片

Consul

解決問題

本考慮自行去實現並提交給官方,github clone spring-cloud-alibaba 到本地發現代碼有變更,官方已經實現了該功能。
架構

可是官方還沒有發版,因此筆者考慮把相關代碼拷貝到本身的項目中。ide

首先拷貝 NacosWatch

圖片

注意此處有報錯,能夠寫死爲下面的值或者自定義 properties配置。微服務


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

而後添加 NacosWatch 自動化相關代碼:


/** * NacosWatch 自動配置 * * @author L.cm */@Configurationpublic 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 中,大功告成!spa

相關文章
相關標籤/搜索