筆者最近在新公司開始從新架構公司的微服務,在註冊中心選擇了 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
本考慮自行去實現並提交給官方,github clone spring-cloud-alibaba
到本地發現代碼有變更,官方已經實現了該功能。
架構
可是官方還沒有發版,因此筆者考慮把相關代碼拷貝到本身的項目中。ide
注意此處有報錯,能夠寫死爲下面的值或者自定義 properties
配置。微服務
/** * watch delay,duration to pull new service from nacos server. */private long watchDelay = 30000;
/** * 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