spring boot 集成eureka的几个坑

本人最近在spring boot中集成了eureka,遇到了下面几个坑,并记录解决办法:

  • 注册的服务都是机器名,而非IP.
    解决办法如下:
eureka:
  instance:
    hostname: localhost
    # 使用IP注册
    preferIpAddress: true

加入preferIpAddress配置即可

  • 应用名含contextPath,无法在代码上获取这个怎么办??
    解决办法如下:
  1. 自定义属性配置
eureka:
  instance:
    hostname: localhost
    # 使用IP注册
    preferIpAddress: true
    metadata-map:
          contextPath: ${server.context-path:}
  1. 代码中获取自定义属性
ServiceInstance serviceInstance=loadBalancerClient.choose("EBPM");
        sb.append( "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+ serviceInstance.getMetadata().get("contextPath") );
    
  • 通过spring.application.name获取不到对应的配置
    该问题其实是大小写问题,如果spring.application.name配的是小写,请在client调用时转成大写再调用.
    至此,遇到的坑已填完.

你可能感兴趣的:(spring boot 集成eureka的几个坑)