spring boot Redis 配置 - 发生连接失败。5000 毫秒后重新启动订阅任务

use*_*323 5 spring-mvc redis spring-data spring-boot

我有以下 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);
}
Run Code Online (Sandbox Code Playgroud)

}

这是 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
Run Code Online (Sandbox Code Playgroud)

当我启动 spring boot 应用程序时,它启动正常,但稍后,我开始收到以下错误。以下错误不会停止。

[pool-2-thread-1] 错误 requestId= osdrlRedisMessageListenerContainer 647 - 发生连接失败。5000 毫秒后重新启动订阅任务

我只是使用 redis zip 文件附带的默认 redis 配置文件。我只改了密码。

但即使我收到错误消息,spring web 应用程序也能正常工作。会话已创建,我在本地计算机上使用 Web 应用程序没有问题。我什至使用 haproxy(redis 端口:6376)使用集群 redis(3 个实例)对其进行了测试。基本上,spring web 应用程序可以很好地与集群 redis 配合使用。

但是我不认为我可以在不弄清楚错误消息的情况下将其部署到生产环境中。

有人知道我为什么会得到这个吗?

谢谢