簡介
筆者最近在新公司開始重新架構公司的微服務,在注冊中心選擇了 nacos,上家公司 Eureka 遇到了一些坑,想嘗試 nacos。整個微服務也會以 Mica 作為微服務核心,感興趣的朋友可以檢視碼雲連結:
https://gitee.com/596392912/mica。
問題
在 nacos 和 Spring boot admin 整合後發現隻有在 admin 啟動之前的服務才能被監控到。點進去發現 Spring boot admin 是依賴 HeartbeatEvent 事件進行的新服務的注冊。

我們可以看到 Eureka 和 Consul 的 Client 都會發送該事件。
Eureka
Consul
解決問題
本考慮自行去實作并送出給官方,
github clone spring-cloud-alibaba
到本地發現代碼有變動,官方已經實作了該功能。
但是官方尚未發版,是以筆者考慮把相關代碼拷貝到自己的項目中。
首先拷貝 NacosWatch
注意此處有報錯,可以寫死為下面的值或者自定義
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
中,大功告成!
開源推薦
-
Spring boot 微服務核心元件集: gitee.com/596392912/m…mica
-
一款基于vue可配置化的神奇架構: gitee.com/smallweigit…Avue
-
宇宙最強微服務(架構師必備): gitee.com/log4j/pigpig
-
完整的線上解決方案(企業開發必備): gitee.com/smallc/Spri…SpringBlade
-
支付SDK讓支付觸手可及: gitee.com/javen205/IJ…IJPay