1. 程式人生 > >SpringBoot2.0中使用訂閱redis的多個頻道的消息

SpringBoot2.0中使用訂閱redis的多個頻道的消息

HA BE ger redist temp 參考 AS one mave

聲明:參考文章:https://blog.csdn.net/myNameIssls/article/details/75471012?locationNum=2&fps=1

一·使用maven,在項目中引入redis啟動器

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

二.註冊一個redis消息監聽類

@Configuration
public class RedisSubListenerConfig {
    //不同的頻道名
    private static final  String channel = "testchannel";
    
private static final String channel2 = "chat"; /** * redis消息監聽器容器 * 可以添加多個監聽不同話題的redis監聽器,只需要把消息監聽器和相應的消息訂閱處理器綁定,該消息監聽器 * 通過反射技術調用消息訂閱處理器的相關方法進行一些業務處理 * @param connectionFactory * @param listenerAdapter * @return */ @Bean //相當於xml中的bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter,MessageListenerAdapter listenerAdapter2) { RedisMessageListenerContainer container
= new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //訂閱了一個叫testchannel 的通道 container.addMessageListener(listenerAdapter, new PatternTopic(RedisSubListenerConfig.channel)); //訂閱了一個叫chat的頻道 container.addMessageListener(listenerAdapter2, new PatternTopic(RedisSubListenerConfig.channel2)); return container; } /** * 消息監聽器適配器,綁定消息處理器,利用反射技術調用消息處理器的業務方法 * @param receiver * @return */ @Bean MessageListenerAdapter listenerAdapter(MessageReceiver receiver) { return new MessageListenerAdapter(receiver, "receiveMessage"); } @Bean MessageListenerAdapter listenerAdapter2(MessageReceiver receiver) { return new MessageListenerAdapter(receiver, "receiveMessage2"); } /**redis 讀取內容的template */ @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } }

三·編寫處理訂閱消息的類

@Component
public class MessageReceiver {
     /**接收消息的方法*/
    public void receiveMessage(String message){
        System.out.println("收到一條消息:"+message);
    }
    
    /**接收消息的方法*/
    public void receiveMessage2(String message){
        System.out.println("收到一條消息2:"+message);
    }

}

四.啟動程序,向redis的chat以及testchannel頻道中發送消息,都可以監聽到

SpringBoot2.0中使用訂閱redis的多個頻道的消息