1

我有一个遗留代码,其中在服务启动后向领事注册了一个 Spring Boot 应用程序。应用程序自动装配 ConsulLifecycle spring bean,通过它使用其 inbuild 方法 ConsulLifecycle.start() 和 ConsulLifecycle.stop() 向 consul 注册/取消注册服务。

现在我们已经将 spring 升级到 5.1.5,spring-cloud-starter-consul-discovery 到 2.1.1 和 spring-cloud-dependencies 到 Greenwich.RELEASE,其中 ConsulLifecycle bean 被删除。因此,为了实现相同的行为,我正在尝试自动装配 ConsulAutoServiceRegistration spring bean,并使用它的 start 和 stop 方法向 consul 注册和取消注册服务。

现在的问题是,当我尝试启动 spring boot 应用程序时,我在应用程序启动时遇到了一些错误(在帖子的最后一节中提到了错误)。

注意:我有定义此属性的 application.properties 文件

spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500     
##Embedded Tomcat 
server.port = 8091
server.address = 0.0.0.0

我在应用程序启动时遇到的错误,即在向领事注册服务时

2:25 - Unknown error occured.
java.lang.IllegalArgumentException: service.port has not been set
    at org.springframework.util.Assert.notNull(Assert.java:198)
    at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.getRegistration(ConsulAutoServiceRegistration.java:56)
    at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.getRegistration(ConsulAutoServiceRegistration.java:32)
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:117)
    at org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration.start(ConsulAutoServiceRegistration.java:68)
at com.bmc.agent.data.refresh.manager.core.ConsulLeaderElectionHelper.checkAndGetLocalService(ConsulLeaderElectionHelper.java:201)
at com.bmc.agent.data.refresh.manager.core.ConsulLeaderElectionHelper.run(ConsulLeaderElectionHelper.java:152)
4

1 回答 1

0

application.properties还应该具有以下属性:

spring.cloud.consul.discovery.healthCheckPath=${spring.application.name}/ManagementEndPoints/health
spring.cloud.consul.discovery.healthCheckInterval=5s
spring.cloud.consul.discovery.instance-id=${spring.application.name}
spring.cloud.consul.discovery.scheme=http or https
spring.cloud.consul.discovery.hostname=${spring.application.name}
spring.cloud.consul.discovery.port=${server.port}
于 2020-01-15T15:10:36.767 回答