美文网首页互联网科技Java 杂谈程序员
spring boot 使用redis进行发布订阅

spring boot 使用redis进行发布订阅

作者: cb9841112785 | 来源:发表于2018-07-01 20:38 被阅读152次

    异步消息的方式有很多,这篇博客介绍如何使用redis进行发布订阅,

    完成这个示例只需要三个文件

    1.redis消息监听配置

    @Configurationpublicclass RedisListenerConfig {

        /**    * redis消息监听器容器

        * 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器

        * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理

        * @param connectionFactory

        * @param listenerAdapter

        * @return*/    @Bean

        RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,

                                                MessageListenerAdapter listenerAdapter

        ) {

            RedisMessageListenerContainer container =new RedisMessageListenerContainer();

            container.setConnectionFactory(connectionFactory);

            //可以添加多个 messageListenercontainer.addMessageListener(listenerAdapter,newPatternTopic("index"));

            return container;

        }

        /**    * 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法

        * @param redisReceiver

        * @return*/    @Bean

        MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) {

            System.out.println("消息适配器进来了");

            returnnewMessageListenerAdapter(redisReceiver, "receiveMessage");

        }

        //使用默认的工厂初始化redis操作模板    @Bean

        StringRedisTemplate template(RedisConnectionFactory connectionFactory) {

            returnnew StringRedisTemplate(connectionFactory);

        }

    }

    2.消息处理

    @Servicepublicclass RedisReceiver {

        publicvoid receiveMessage(String message) {

            System.out.println("消息来了:"+message);

            //这里是收到通道的消息之后执行的方法    }

    }

    3.一个发送消息的定时器

    //定时器@EnableScheduling

    @Componentpublicclass TestSenderController {

        @Autowired

        private StringRedisTemplate stringRedisTemplate;

        //向redis消息队列index通道发布消息@Scheduled(fixedRate = 3000)

        publicvoid sendMessage(){

            stringRedisTemplate.convertAndSend("index",String.valueOf(Math.random()));

        }

    }

    运行结果如图

    {附}:大家可以点击加入群:【java高级架构进阶】:https://jq.qq.com/?_wv=1027&k=575y0Kj里面有Java高级大牛直播讲解知识点 走的就是高端路线(如果你想跳槽换工作 但是技术又不够 或者工作上遇到了瓶颈 我这里有一个JAVA的免费直播课程 讲的是高端的知识点基础不好的误入哟 只要你有1-5年的开发经验可以加群找我要课堂链接 注意:是免费的 没有开发经验误入哦)

    相关文章

      网友评论

        本文标题:spring boot 使用redis进行发布订阅

        本文链接:https://www.haomeiwen.com/subject/cmehuftx.html