Spring Boot:2.0.3.释放
莴苣芯:5.0.4.0
spring数据redis:2.0.8.0版本
所以首先我的问题解决了,我只是不明白为什么,它困扰着我,所以一些澄清这是感谢。
我正在开发的一个微服务中有一个redis配置:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.resource.ClientResources;
import io.lettuce.core.resource.DefaultClientResources;
@Configuration
public class LettuceConfig {
@Bean(destroyMethod = "shutdown")
ClientResources clientResources() {
return DefaultClientResources.create();
}
@Bean(destroyMethod = "shutdown")
RedisClient redisClient(ClientResources clientResources) {
String host = System.getenv("spring_redis_host") != null ? System.getenv("spring_redis_host") : "127.0.0.1";
String port = System.getenv("spring_redis_port") != null ? System.getenv("spring_redis_port") : "6379";
String password = System.getenv("spring_redis_password") != null ? System.getenv("spring_redis_password") : "";
Boolean isLocal = host.equals("127.0.0.1");
RedisURI redisUri = RedisURI.Builder.redis(host).withSsl(!isLocal).withPassword(password).withPort(Integer.parseInt(port))
.build();
return RedisClient.create(clientResources, redisUri);
}
@Bean(destroyMethod = "close")
StatefulRedisConnection<String, String> connection(RedisClient redisClient) {
return redisClient.connect();
}
}
在我将actuator添加到项目后,我意识到该服务无法连接到aws中的远程redis,该服务引发了以下异常:
java.io.IOException: Connection reset by peer
在快速的google搜索之后,大多数答案都表明问题出在我的ssl连接上,但是我很困惑,因为redisuri包含了withssl函数调用。
出于好奇,我在application.properties文件中添加了以下属性,因为我在其他服务中使用基于属性的redis配置,而且我知道它可以工作。
spring.redis.ssl=true
现在这解决了我的问题,但我不明白为什么这种方法有效而redisuri版本无效。
有谁能给我一个解释,谁对以下情况有清楚的了解?
我可以分享更多的日志,如果需要的话。谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!