本文作者:suxingrui
本文链接:https://blog.csdn.net/suxingrui/article/details/103789802
版权声明:本文为原创文章,转载请注明出处。
回顾2019年碰到的问题及解决方式
问题:展示Nacos服务列表中的服务的启动时间
问题发现:
为Nacos添加线上操作关闭服务的功能之后,发现展现的信息无法确认哪个服务是旧的,哪个是新的
所以实现了以下的效果:
这样就能够根据版本号或者服务启动的时间来区分新旧服务以便下线或关闭
调查分析:
参照官方文档跟分析源码
解决方法:
1、可以提前确定的信息可以通过在bootstrap.properties添加
spring.cloud.nacos.discovery.metadata.XXXXXX=xxxxx
来达到目的
2、如同启动时间这样需要启动时才能确定的信息就不能通过以上方式来设置了
分析源码可知,metadata信息存储在类NacosDiscoveryProperties的对象中
而NacosDiscoveryProperties对象:
表示在没有创建对象的时候,才会自动创建,
所以,我们可以创建这个对象并初始化需要设置的metadata值:
@Bean
@ConditionalOnProperty(value = "spring.cloud.nacos.discovery.enabled", matchIfMissing = true)
public NacosDiscoveryProperties nacosProperties() {
NacosDiscoveryProperties nacosDiscoveryProperties = new NacosDiscoveryProperties();
nacosDiscoveryProperties.getMetadata()//
.put("startup.time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
return nacosDiscoveryProperties;
}