Как использовать RedisMessageListenerContainer в классе конфигурации

Я использую spring-MVC и spring-data-redis для управления пулом кластера Redis. Когда я использую jedisCluster.subscribe(new JedisPubSubListener(), "bb");

мое приложение будет хранить этот код (я пытаюсь использовать поток, но другой не может получить экземпляр в @autowerid). Я много раз гуглил, чтобы указать мне на использование spring-boot . но я могу изменить структуру в нашем проекте. Поэтому я думаю, что когда spring init я смогу зарегистрировать прослушиватель для использования. Но я могу запустить соус в своем исходном коде.

Может ли кто-нибудь сделать для меня пример, если я использую следующий код:

@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;
    }
}

person 石荒人    schedule 22.01.2019    source источник


Ответы (1)


вот как я устанавливаю в своей конфигурации.

@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");
}
person 石荒人    schedule 23.01.2019