美文网首页JavaSpringBoot精选JAVA
SpringBoot使用redis进行发布订阅

SpringBoot使用redis进行发布订阅

作者: 阿靖哦 | 来源:发表于2019-06-19 10:49 被阅读1次

    redis不仅是一个非常强大的非关系型数据库,它同时还拥有消息中间件的pub/sub功能,在spring boot中进行如下设置就可以使用redis的pub/sub功能

    案例:

    • 新建一个消息发布者,设置主题为topic
    /**
     * @author Gjing
     *
     * 消息发送者
     **/
    @RestController
    public class PubController {
    
        @Resource
        private StringRedisTemplate stringRedisTemplate;
    
        private static AtomicInteger count = new AtomicInteger();
    
        @PostMapping("/message")
        public void sendMessage() {
            int i = count.incrementAndGet();
            stringRedisTemplate.convertAndSend("topic", "消息" + i);
        }
    }
    
    • 定义消息监听者
    /**
     * @author Gjing
     *
     * 消息监听者
     **/
    @Slf4j
    public class Receiver {
    
        public void receiveMessage(String message) {
            log.info("监听者1收到消息:{}", message);
        }
    }
    
    • 定义配置类,配置redis监听者容器和监听者适配器
    /**
     * @author Gjing
     **/
    @Configuration
    public class RedisConfiguration {
    
        /**
         * 消息适配器
         *
         * 绑定消息监听者和接收监听的方法,必须要注入这个监听器,不然会报错
         * @return MessageListenerAdapter
         */
        @Bean
        public MessageListenerAdapter listenerAdapter() {
            return new MessageListenerAdapter(new Receiver(), "receiveMessage");
        }
    
        /**
         * 定义消息监听者容器
         * @param connectionFactory 连接工厂
         * @param listenerAdapter 消息处理器
         * @return RedisMessageListenerContainer
         */
        @Bean
        public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                                                       MessageListenerAdapter listenerAdapter) {
            RedisMessageListenerContainer listenerContainer = new RedisMessageListenerContainer();
            listenerContainer.setConnectionFactory(connectionFactory);
            listenerContainer.addMessageListener(listenerAdapter, new PatternTopic("topic"));
            return listenerContainer;
        }
    
    }
    
    • 运行结果
      1560912324(1).jpg

    以上为个人观点,如有误欢迎各位指正

    相关文章

      网友评论

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

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