zoukankan      html  css  js  c++  java
  • Spring Boot中使用redis的发布/订阅模式

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

    1.创建redis监听的设置类

    @Configuration
    public class RedisSubListenerConfig {
       //初始化监听器
        @Bean
        RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                MessageListenerAdapter listenerAdapter) {
            RedisMessageListenerContainer container = new RedisMessageListenerContainer();
            container.setConnectionFactory(connectionFactory);
            container.addMessageListener(listenerAdapter, new PatternTopic("这里是监听的通道的名字"));
            return container;
        }
       //利用反射来创建监听到消息之后的执行方法
        @Bean
        MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) {
            return new MessageListenerAdapter(redisReceiver, "receiveMessage");
        }
      
      //使用默认的工厂初始化redis操作模板 @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } }

    2.创建监听之后的receiver方法类

    @Service
    public class RedisReceiver {
        @Autowired
        RedisService redisService;
    
        public void receiveMessage(String message) {
            //这里是收到通道的消息之后执行的方法
        }
    }

    3.使用reidsTemplate向通道发送消息

    @Service
    public class RedisService {
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
      //向通道发送消息的方法
        public void sendChannelMess(String channel, String message) {
            stringRedisTemplate.convertAndSend(channel, message);
        }
    }

    附:有些设置在RedisReceiver接受类构造器中传入了CountDownLatch来控制线程,如果不需要控制线程可以不用。

    上述内容如有不正之处,还望不吝指教!
    版权声明:本文为博主原创文章,转载请注明出处!
  • 相关阅读:
    Linux中OCI开发库的配置
    makefile中的gcc -o $@ $^是什么意思?
    【转】gcc中的-w -W和-Wall选项
    【转】Linux查看系统是32位还是64位方法总结
    【转】gcc命令中参数c和o混合使用的详解
    Python2.7设置在shell脚本中自动补全功能的方法
    Python3设置在shell脚本中自动补全功能的方法
    Pyqt图标下载网站
    如何使QLineEdit禁止编辑
    python偏函数的运用
  • 原文地址:https://www.cnblogs.com/meetzy/p/7986956.html
Copyright © 2011-2022 走看看