Spring Cloud Eureka 微服务中如何获取自身注册的服务信息--获取动态port 以及动态 instanceId

本文介绍了在Spring Cloud Eureka微服务架构中,如何正确获取到服务实例的动态端口(port)和动态instanceId。常见的通过Environment、@LocalServerPort、@Value获取端口的方法在动态port情况下无效。文中提供了一种针对Eureka注册中心的解决方案,通过源码分析,指出在nonSecurePort大于0且服务注册时会触发InstanceRegisterEvent,从而可以获取到完整的注册信息。
摘要由CSDN通过智能技术生成

网上说那些获取port的博客,大部分都是扎堆的xxxx。基本都不看源码的乱写

网上基本上就是用Environment   @LocalServerPort  @Value 来获取配置文件里的port   ---- (md,spring boot基础知识你用在Spring cloud xxx,脑子有病)  这些只针对配置文件里写死的端口有效,但是在微服务中我们通常使用动态port,没法获取。

 

这里我分享另一种方法,针对Eueka为注册中心方法(其余的类似)

源码:

类EurekaAutoServiceRegistration中有这么一段源码
// only initialize if nonSecurePort is greater than 0 and it isn't already running
// because of containerPortInitializer below
if (!this.running.get() && this.registration.getNonSecurePort() > 0) {

   this.serviceRegistry.register(this.registration);

   this.context.publishEvent(
         new InstanceRegisteredEvent<>(this, this.registration.getInstanceConfig()));
   this.running.set(true);
}

这里说是如果nonSecurePort比0大的时候,并且没有运行的时候在这里面注册,并且触发InstanceRegisterEvent(euerka客户端注册事件)事件,将注册服务配置信息传入。   debug模式下我们可以很清楚的看到里面的配置信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值