ฉันจะใช้ RedisMessageListenerContainer ในคลาสการกำหนดค่าได้อย่างไร

ฉันใช้ spring-MVC และ spring-data-redis เพื่อควบคุมพูล Redis-cluster เมื่อฉันใช้ jedisCluster.subscribe(new JedisPubSubListener(), "bb");

แอปพลิเคชันของฉันจะเก็บอยู่ในรหัสนี้ (ฉันพยายามใช้เธรด แต่อีกอันหนึ่งไม่สามารถรับอินสแตนซ์ใน @autoowerid) ฉัน google มีวิธีมากมายที่ชี้ให้ฉันใช้ 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