本人最近在spring boot中集成了eureka,遇到了下面几个坑,并记录解决办法:
- 注册的服务都是机器名,而非IP.
解决办法如下:
eureka:
instance:
hostname: localhost
# 使用IP注册
preferIpAddress: true
加入preferIpAddress配置即可
- 应用名含contextPath,无法在代码上获取这个怎么办??
解决办法如下:
- 自定义属性配置
eureka:
instance:
hostname: localhost
# 使用IP注册
preferIpAddress: true
metadata-map:
contextPath: ${server.context-path:}
- 代码中获取自定义属性
ServiceInstance serviceInstance=loadBalancerClient.choose("EBPM");
sb.append( "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+ serviceInstance.getMetadata().get("contextPath") );
- 通过spring.application.name获取不到对应的配置
该问题其实是大小写问题,如果spring.application.name配的是小写,请在client调用时转成大写再调用.
至此,遇到的坑已填完.
网友评论