Spring cloud 如何在Concur中正确注册Spring Boot应用程序(部署到Cloud Foundry)

Spring cloud 如何在Concur中正确注册Spring Boot应用程序(部署到Cloud Foundry),spring-cloud,spring-cloud-consul,Spring Cloud,Spring Cloud Consul,我遵循了以下文档:并按如下方式配置了我的Spring Boot应用程序: spring: cloud: consul: enabled: true host: consul.domain.tld port: 443 discovery: instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}

我遵循了以下文档:并按如下方式配置了我的Spring Boot应用程序:

spring:
  cloud:
    consul:
      enabled: true
      host: consul.domain.tld
      port:  443
      discovery:
        instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
        fail-fast: false
部署到Cloud Foundry后,该应用程序可以连接到Concur并尝试注册,但Concur的服务检查立即失败

通过阅读配置内容,我在Spring Boot应用程序中获得了以下实例:

list = discoveryClient.getInstances("myApp");
list.get(0) => "http://05c81764-18a4-4905-41a8-b5b8:8080"
我发现UUID很可能是CloudFoundry生成的instanceId。当然,这个URL不起作用,无论是在CloudFoundry内部,还是对于试图定期检查服务运行状况的外部Concur服务器

我必须如何正确配置Spring Boot应用程序,才能在Cloud Foundry中向Concur注册服务

您需要将spring.cloud.consul.discovery.hostname设置为vcap环境变量返回的值

比如:

spring.cloud.consul.discovery.hostname=${vcap.application.uris[0]:localhost}
spring.cloud.consul.discovery.port=80