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


聲明:參考文章: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頻道中發送消息,都可以監聽到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM