最近是重新开发整个项目,在上线测试的时候发现这个问题。

项目环境:SpringBoot2.x+Consul+Redission+Maven

报错的信息如下:

o.s.b.a.redis.RedisHealthIndicator - Redis health check failed
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

项目中引用了健康检查

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

通过spring-boot-actuator-autoconfigure:2.1.13.RELEASE的jar包找到了源码

源代码如下:

@Configuration
@ConditionalOnClass(RedisConnectionFactory.class)
@ConditionalOnBean(RedisConnectionFactory.class)
@ConditionalOnEnabledHealthIndicator("redis")
@AutoConfigureBefore(HealthIndicatorAutoConfiguration.class)
@AutoConfigureAfter({ RedisAutoConfiguration.class, RedisReactiveHealthIndicatorAutoConfiguration.class })
public class RedisHealthIndicatorAutoConfiguration
extends CompositeHealthIndicatorConfiguration<RedisHealthIndicator, RedisConnectionFactory> { private final Map<String, RedisConnectionFactory> redisConnectionFactories; public RedisHealthIndicatorAutoConfiguration(Map<String, RedisConnectionFactory> redisConnectionFactories) {
this.redisConnectionFactories = redisConnectionFactories;
} @Bean
@ConditionalOnMissingBean(name = "redisHealthIndicator")
public HealthIndicator redisHealthIndicator() {
return createHealthIndicator(this.redisConnectionFactories);
} }

解决方法1:

通过@ConditionalOnEnabledHealthIndicator可以知道解决办法,在配置文件中禁用redis检查

management:
health:
redis: ---禁用redis检查
# defaults: ---也可以禁用,不推荐
enabled: false

解决方法2:

查看源码发现RedisHealthIndicator继承AbstractHealthIndicator,AbstractHealthIndicator实现了HealthIndicator接口。我们可以通过自定义配置来解决。

@Configuration
public class RedisHealthIndicator implements HealthIndicator{ @Override
public Health health() {
return Health.up().build();
}
}

注意:我们必须要将原有的RedisHealthIndicator类覆盖,所以class名为RedisHealthIndicator。如果类想另起名则需指定bean名为redisHealthIndicator,否则还是会出现错误信息。

最后说下自己遇到的原因吧!属实有点尴尬。

自己项目上线遇到的问题则是怪自己粗心。只在redisson的配置文件中配置了redis连接,忘记在application.yml配置redis的连接信息。

项目启动报错:Redis health check failed的更多相关文章

  1. springboot项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde

    springboot项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde 创建 ...

  2. SSM项目启动报错:Failed to read candidate component class

    SSM项目启动报错:Failed to read candidate component class 换成3.1又没有问题,换成3.2又不行,查看编译环境用的是1.8,将1.8降为1.7,问题解决,服 ...

  3. Linux下Tomcat项目启动报错

    Linux下Tomcat项目启动报错 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading cla ...

  4. Eureka Server项目启动报错处理

    Eureka Server项目启动报错处理 Eureka是一个服务发现组件,提供服务注册.发现等注册中心功能,使用spring boot启动eureka应用时出现报错: 20:36:17.646 [r ...

  5. (转)Eclipse4.2 Tomcat启动报错 A child container failed during start

     Eclipse4.2 Tomcat启动报错 A child container failed during start 2013-5-21 15:02:24 org.apache.catalina. ...

  6. vue项目启动报错 spawn cmd ENOENT errno: -4058

    vue项目启动报错 spawn cmd ENOENT errno: -4058 运行vue项目(npm run dev)报错 提示 'npm' 不是内部或外部命令 cmd输入node -v 有版本号 ...

  7. eclipse 中导入 maven项目 启动报错

    导入Maven项目到Eclipse中时,出现问题如下: java.lang.ClassNotFoundException: org.springframework.web.context.Contex ...

  8. AndroidStudio导入开源项目提示报错:Gradle sync failed: SSL peer shut down incorrectly

    问题描述: AndroidStudio导入开源项目提示报错:Gradle sync failed: SSL peer shut down incorrectly (1 m 12 s 92 ms) 解决 ...

  9. 创建spring boot项目启动报错遇到的问题

    1.Spring boot,Mybatis 启动报错 Failed to auto-configure a DataSource *************************** APPLICA ...

随机推荐

  1. SpringBoot中获取上下文

    在实际开发中,有时候会根据某个bean的名称或class到Spring容器中获取对应的Bean.这里只做个简单的记录,方便后续自查. @Component public class SpringCon ...

  2. LeetCode 617. 合并二叉树 Java

    给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 ...

  3. [bug] Job for network.service failed because the control process exited with error code

    原因 复制虚拟机,没有改网卡配置文件 参考 https://blog.csdn.net/dongfei2033/article/details/81124465

  4. [bug] sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'recevie_name' in 'field list'")

    Python Flask 开发购物网站,提交订单时报错 根据提示,检查代码,发现是字段名拼写错误导致,数据库对应的字段是receive_name,误写成了recevie_name 另外要注意,灰色字和 ...

  5. win10系统U盘读取不了怎么解决 三种方法快速解决&quot;文件或目录损坏且无法读取& 发布时间:2020-06-05 09:19:46 作者:佚名 我要评论

    win10系统U盘读取不了怎么解决 三种方法快速解决"文件或目录损坏且无法读取&   发布时间:2020-06-05 09:19:46   作者:佚名    我要评论 win10电脑 ...

  6. Linux创建RAID10_实战

    Linux创建RAID10_实战 Linux创建RAID10 RAID10 是先将数据进行镜像操作,然后再对数据进行分组,RAID1 在这里就是一个冗余的备份阵列,而RAID0则负责数据的读写阵列 至 ...

  7. Linux 用户管理_用户相关配置文件详解

    linux的用户管理 linux支持多个用户同时使用同一个用户登陆系统,windows在修改组策略的情况下,也可以多个人使用同一个用户登陆. 远程连接Linux的方式:ssh 远程连接windows的 ...

  8. linux基础之权限管理

    本节内容 1. 权限类别 属主(owner) 属组(group) 其他人(other) 2. 查看权限 ls -l 十位: 第一位文件类型-,d,l, 3. 设置权限 chmod 选项 权限模式 fi ...

  9. 端口映射(socket应用)

    # coding=gb2312 import sys import time import socket import thread import subprocess ############### ...

  10. 重新整理 .net core 实践篇————依赖注入应用之生命法则[三]

    前言 该章演示依赖注入中,对象的释放行为. 紧接上文表示,演示: services.AddSingleton<IMySingletonService, MySingletonService> ...