如何在配置类中使用RedisMessageListenerContainer

时间:2019-01-22 03:26:52

标签: spring-mvc spring-data-redis

我正在使用spring-MVC和spring-data-redis来控制Redis集群池。 当我使用jedisCluster.subscribe(new JedisPubSubListener(),“ bb”);

我的应用程序将存储此代码(我尝试使用线程,但另一个无法在@autowerid中获取该实例)。 我用谷歌搜索的很多方法都指向使用spring-boot。 但我可以更改项目的结构。 因此,我认为在Spring初始化时,我可以注册一个监听器来使用。 但是我可以用我的原始代码来调味。

如果我使用以下代码,有人可以为我举例:

@Configuration
public class RedisClusterConfig {
    private List<String> redisNodes(){
        return Arrays.asList(redisNode.split(","));
    }

    @Bean
    JedisPoolConfig jedisPoolConfig(){
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(maxTotal);
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMinIdle(minIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        jedisPoolConfig.setTestOnBorrow(testOnBorrow);
        jedisPoolConfig.setTestOnReturn(testOnReturn);
        jedisPoolConfig.setTestWhileIdle(testWhileIdle);        
        return jedisPoolConfig;
    }

@Bean
    RedisConnectionFactory redisClusterConnectionFactory(JedisPoolConfig 
jedisPoolConfig){
        JedisConnectionFactory redisConnectionFactory = new 
JedisConnectionFactory(new RedisClusterConfiguration(redisNodes()));
        redisConnectionFactory.setPoolConfig(jedisPoolConfig);
        return redisConnectionFactory;
    }
}

1 个答案:

答案 0 :(得分:0)

这就是我在配置中进行设置的方式。

@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {

    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    container.setConnectionFactory(redisConnectionFactory);

    container.addMessageListener(consumerRedis(),topic());
    return container;

}

@Bean
public ConsumerRedisListener consumerRedis() {
    return new ConsumerRedisListener();//this class implements MessageListener 
}

@Bean
public ChannelTopic topic() {
    return new ChannelTopic("channel");
}