目的:Springboot Redis Sublish/Publishのシンプルな実装

2849 ワード

目的:Springboot Redis Sublish/Publishのシンプルな実装
環境:win 10 idea 2019.2
手順:
1.依存のインポート
 
    org.springframework.boot
    spring-boot-starter-data-redis
 

2.ブロードキャストの構成:ブロードキャスト関連beanをredisに追加し、handleのリスニングと受信を設定する
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.ChannelTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;

@Configuration
public class RedisConfiguration {
    @Bean
    @ConfigurationProperties(prefix = "spring.redis")
    public JedisConnectionFactory getConnectionFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        return factory;
    }
	//TODO
	//    redis    

	/* message   */
    @Bean
    MessageListenerAdapter messageListenerAdapter () {
        return new MessageListenerAdapter((MessageListener) (message, pattern) -> {
			//TODO
			//             。          ,        ip/mac       。
			System.out.println("message.toString()");
        });
    }
	/*     ,     */
    @Bean
    RedisMessageListenerContainer redisMessageListenerContainer(JedisConnectionFactory jedisConnectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(jedisConnectionFactory);
        container.addMessageListener(messageListenerAdapter(), channelTopic());
        return container;
    }
    
	/*     ,   ,    connectionFactory,   RedisConnectionFactory
    @Bean
    RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.addMessageListener(messageListenerAdapter(), channelTopic());
        return container;
    }
    */

	/*       ,        "messageQueue" */
    @Bean
    ChannelTopic channelTopic () {
        return new ChannelTopic("broadCast_Queue_Test");
    }
}

3.メッセージパブリケーションSublishは、メッセージをパブリッシュする必要がある場所に次のコードを追加すればよい.
//  
@Autowired
StringRedisTemplate stringRedisTemplate ;
 
//  ,         (        jsonString,       json   )
//                 。
 stringRedisTemplate .convertAndSend("broadCast_Queue_Test","This is a sublish message");