Spring Cloud - Registry Service 端口自定义

Spring Cloud - Registry Service port customization

我想使用 Spring Cloud 自定义 Eureka 端口。 使用下面的默认端口,服务注册中心认为自己是正确的(在提供的 GUI 中)

spring:
  application:
    name: services-registry
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
    nonSecurePort: ${server.port}
  client:
    register-with-eureka: true
    fetch-registry: false
    service-url:
      default-zone: http://${eureka.instance.hostname}:${server.port}/eureka/

但如果我只是将 server.port 更改为 8787,则没有任何服务可以自行注册,甚至服务注册表本身也无法注册。

2017-01-09 16:18:21.584  WARN 17496 --- [nfoReplicator-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failure
2017-01-09 16:18:21.584  WARN 17496 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_SERVICES-REGISTRY/xxx.org:services-registry:8787 - registration failed Cannot execute request on any known server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
...
2017-01-09 16:13:33.299  WARN 17496 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

谁能解释一下这个问题并拯救我的一天?谢谢!

好的,知道了... service-url 属性之后的标签(在YML中可以别名为serviceUrl)是一个HashMap KEY,而不是 属性 标签。所以它必须以任何方式保留为 Camel Case 标签!

eureka.client.service-url.defaultZone=http://[myIP@]:8787/eureka