当前位置: 首页 > 知识库问答 >
问题:

在服务启动后向 consul 注册 spring boot 应用程序

卫高谊
2023-03-14

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

现在我们把spring升级到了5.1.5,spring-cloud-starter-consul-discovery升级到了2.1.1,spring-cloud-dependencies升级到了格林威治。删除了同椭圆bean的版本。因此,为了实现相同的行为,我尝试自动连接ConsulAutoServiceRegistration spring bean,并使用它的start和stop方法向consul注册和注销服务。

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

注意:我有一份申请。我在其中定义此属性的属性文件

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

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

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)

共有1个答案

齐建白
2023-03-14

您的< code > 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}
 类似资料:
  • 本文向大家介绍Springcloud服务注册consul客户端过程解析,包括了Springcloud服务注册consul客户端过程解析的使用技巧和注意事项,需要的朋友参考一下 1.版本说明 springboot 2.2.5.RELEASE springcloud Hoxton.SR6 2.依赖 3.配置文件 4.启动注解 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程

  • 我正在使用Spring Boot注册服务器(Eureka服务器)。目前它正在使用以下配置。 项目名称:注册服务 内部主要方式:系统。setProperty(“spring.config.name”、“注册服务”); "yml file": 文件名:注册-服务内容: 通过以上配置,应用程序开始在2323上运行。但如果我换了Spring。配置。名称,它不工作,开始给连接拒绝异常。 > 为什么会这样?即

  • 1、前言 本文通过创建 provider-service、consumer-service 两个微服务,并通过 feign 接口调用来演示 Spring Cloud 整合 Consul。阅读本文需要前置知识: Spring Boot Spring Cloud Spring Cloud Feign 2、搭建 provider-service 服务 2.1、创建 maven 模块 创建provider

  • 当我的应用程序启动时,将创建一个executor服务(在java.util.concurrent中使用Executors.NewFixedThreadPool(maxThreadNum))对象。当请求到来时,executor服务将创建线程来处理它们。 当应用程序启动时,它将在executorService池中创建200个线程。 只是想知道当应用程序启动时,这是一种正确的创建线程的方法吗?还是有更好

  • 本文向大家介绍C#使用Consul集群进行服务注册与发现,包括了C#使用Consul集群进行服务注册与发现的使用技巧和注意事项,需要的朋友参考一下 前言 我个人觉得,中间件的部署与使用是非常难记忆的;也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用。 所以,我觉得学习中间件的文章,越详细越好;因为,这对作者而言也是一份珍贵的备忘资料。 Consul简介 Consul一个什么