互联网科技Java 杂谈程序员

spring boot 使用redis进行发布订阅

2018-07-01  本文已影响152人  cb9841112785

异步消息的方式有很多,这篇博客介绍如何使用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年的开发经验可以加群找我要课堂链接 注意:是免费的 没有开发经验误入哦)

上一篇下一篇

猜你喜欢

热点阅读