• springboot使用redis实现发布与订阅


    • 配置redis连接地址

    # Redis服务器地址
    spring.redis.host=youxiu326.xin
    # Redis服务器连接端口
    spring.redis.port=6379
    # Redis服务器连接密码(默认为空)
    spring.redis.password=
    • redis订阅者
    /**
     * 消息处理器POJO
     * redis订阅
     */
    @Component
    public class ConsumerMsg {
    
        /**接收消息的方法*/
        public void receiveMessage(String message,String chanel){
            System.out.println("收到一条消息:"+message);
            System.out.println("通道名称:"+chanel);
        }
    
    }
    • redis配置类
    @Configuration
    public class RedisMessageConfig{
        
        @Autowired
        private RedisTemplate<Object, Object> redisTemplate;
        
        @Bean  
        RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
            RedisMessageListenerContainer container = new RedisMessageListenerContainer();
            container.setConnectionFactory(connectionFactory);
            //订阅了一个叫blog.youxiu326.com的通道
            container.addMessageListener(listenerAdapter, new PatternTopic("blog.youxiu326.com"));
            //这个container 可以添加多个messageListener
            return container;
        }
        
    
        /**
         * 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法
         * @param receiver
         * @return
         */
        @Bean
        MessageListenerAdapter listenerAdapter(ConsumerMsg receiver) {
            //这个地方 是给messageListenerAdapter 传入一个消息接受的处理器,利用反射的方法调用“receiveMessage”
            //也有好几个重载方法,这边默认调用处理器的方法 叫handleMessage 可以自己到源码里面看
            return new MessageListenerAdapter(receiver, "receiveMessage");
        }

    此时

    • ConsumerMsg类就已经可以订阅blog.youxiu326.com通道的消息了
       
    • redis发布
    @Controller
    public class RedisCtrl {
    
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
        /**
         * redis发布
         * @return
         */
        @RequestMapping("/test")
        public @ResponseBody String test(){
            /**
             * 通过blog.youxiu326.com通道发送了一条消息
             */
            stringRedisTemplate.convertAndSend("blog.youxiu326.com", "牛逼不不不");
            return "ok";
        }
    
    } 

    启动项目,访问 */test 就可以在控制台看到效果

    来自 http://blog.youxiu326.com/view/8

  • 相关阅读:
    percona-toolkit 之 【pt-heartbeat】说明
    sql-索引的作用(超详细)
    SqlServer2005 海量数据 数据表分区解决难题
    怎样玩转千万级别的数据(表分区)
    SQL数据缓存依赖总结
    关于缓存中Cookie,Session,Cache的使用
    Anti-Forgery Request Recipes For ASP.NET MVC And AJAX
    jquery 父、子页面之间页面元素的获取,方法的调用
    win7系统部分软件显示乱码怎么办
    转:mvc 当中 [ValidateAntiForgeryToken] 的作用
  • 原文地址:https://www.cnblogs.com/youxiu326/p/10540755.html
Copyright © 2020-2023  润新知