redisson自动装配源码导致的redis time out问题
最近和兄弟部门做项目集成时发现个bug,导致redisson一直报连接超时。报错一直是3秒后超时。但是我们设置的spring.redis.timeout比3秒大。后面和同事debug了一下源码。发现RedissonAutoConfiguration自动装配类的public RedissonClient redisson() throws IOException方法里面对timeout的设置有如下判断 :
Method connectTimeoutMethod = ReflectionUtils.findMethod(RedisProperties.class, "getConnectTimeout");
//省略一大段其他源码部分
if (connectTimeoutMethod != null && timeout != null) {
c.setTimeout(timeout);
}
而RedisProperties这个类里面根本就没有connectTimeout属性,只有timeout属性。所以使用自动装配的配置就只有默认的3秒。springboot版本为2.3.12.RELEASE。解决办法是自己写个redisson的配置类手动设置setTimeout参数。