zoukankan      html  css  js  c++  java
  • 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频道中发送消息,都可以监听到

  • 相关阅读:
    第一章:简介
    2018年10月底新公司
    第四章:集成
    第三章:如何建模服务
    第二章:演化架构师
    第一章:微服务
    4、工厂模式
    5、单例模式
    8、模板方法模式
    3、字典介绍
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/9029631.html
Copyright © 2011-2022 走看看