我有以下Spring Boot Redis配置。
@Configuration
public class RedisConnectionConfiguration {
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(jedisConnectionFactory());
return redisTemplate;
}
@Bean
RedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConnectionFactory = null;
jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName(host);
jedisConnectionFactory.setPort(port);
jedisConnectionFactory.setTimeout(0);
jedisConnectionFactory.setPassword(password);
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(20);
jedisPoolConfig.setMaxIdle(9000);
jedisPoolConfig.setMinIdle(16);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setTestWhileIdle(true);
jedisPoolConfig.setMinEvictableIdleTimeMillis(60000);
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(60000);
jedisPoolConfig.setNumTestsPerEvictionRun(3);
jedisPoolConfig.setBlockWhenExhausted(true);
jedisConnectionFactory.setPoolConfig(jedisPoolConfig);
return jedisConnectionFactory;
}
@Bean
MessageListenerAdapter messageListener() {
return new MessageListenerAdapter(eventListenerService);
}
@Bean
ChannelTopic topic() {
return new ChannelTopic(com.mds.core.common.Constants.REDIS_TOPIC_NAME);
}
@Bean
RedisMessageListenerContainer redisContainer() {
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(jedisConnectionFactory());
container.addMessageListener(messageListener(), receiverTopic());
container.setTaskExecutor(Executors.newFixedThreadPool(4));
return container;
}
@Bean
ChannelTopic receiverTopic() {
return new ChannelTopic(com.mds.core.common.Constants.REDIS_FRONT_BACK_TOPIC_NAME);
}
}
这是Redis版本和端口。
Redis 4.0.6(00000000/0)64位 端口:6376
这是spring application.yaml
spring:
profiles: local, default
mvc:
view:
prefix: /
suffix: .jsp
redis:
host: 127.0.0.1
password: welcome
port: 6376
启动spring boot应用程序时,它可以正常启动,但是过了一会儿,我开始出现以下错误。以下错误不会停止。
[pool-2-thread-1]错误requestId = o.s.d.r.l.RedisMessageListenerContainer 647-发生连接失败。 5000毫秒后重新启动订阅任务
我只是使用redis zip文件随附的默认redis配置文件。我只更改了密码。
但是即使我收到错误消息,spring Web应用程序也可以正常工作。会话已创建,并且在本地计算机上使用Web应用程序没有问题。我什至使用具有haproxy(redis端口:6376)的集群redis(3个实例)对其进行了测试。基本上,spring Web应用程序可以与群集的redis一起正常工作。
但是我认为我不知道错误消息就不能将其部署到生产环境中。
有人知道我为什么要得到这个吗?
谢谢