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

簡介

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

問題

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

x003.png

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

Eureka

x004.png

Consul

x002.png

解決問題

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

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

首先拷貝 NacosWatch

x006.png

注意此處有報錯,能夠寫死爲下面的值或者自定義 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 中,大功告成!框架

開源推薦

關注咱們

如夢技術-公衆號.jpg

掃描上面二維碼,更多精彩內容天天推薦!微服務

相關文章
相關標籤/搜索