我有一个遗留代码,其中在服务启动后向领事注册了一个 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)