简介
笔者最近在新公司开始重新架构公司的微服务,在注册中心选择了 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