Spring Boot调用/actuator/health报Discovery Client not initialized问题咨询
根因分析
该报错由Spring Cloud内置的DiscoveryClientHealthIndicator健康检查器触发:你已配置的通用健康检查禁用规则不包含Spring Cloud服务发现类的健康指示器,当你引入了服务发现相关依赖但客户端未完成初始化时,就会返回该UNKNOWN状态。
解决方案
根据你的实际使用场景选择对应方案即可:
方案1:直接禁用服务发现健康检查(无需使用服务发现时优先选择)
在你的application.yml中新增如下配置即可:
management: health: discovery: enabled: false
新增后重启应用,/actuator/health接口就会返回默认的UP状态。
方案2:排查服务发现客户端初始化问题(需要使用服务发现时选择)
如果你确实用到了Eureka、Nacos等服务发现组件,按以下步骤排查:
- 检查服务发现依赖是否正确引入,以Eureka为例需确认pom中已添加
spring-cloud-starter-netflix-eureka-client依赖 - 检查服务发现注册中心地址等配置是否正确,避免因连接失败导致客户端初始化失败
- 查看应用启动日志,定位服务发现客户端初始化阶段的报错信息,针对性解决连接、权限等问题
方案3:移除无用的服务发现依赖
如果你的项目不需要用到服务发现能力,直接将pom.xml或build.gradle中引入的服务发现相关依赖(如spring-cloud-starter-netflix-eureka-client、spring-cloud-starter-alibaba-nacos-discovery等)移除即可,不会再触发该健康检查。
补充说明:Spring Boot 2.2.1.RELEASE对应适配的Spring Cloud版本为Hoxton release系列,如用到Spring Cloud组件请先确认版本匹配,避免因版本兼容问题导致组件初始化失败。
内容的提问来源于stack exchange,提问作者Ayman Patel
相关产品推荐
相关产品推荐

