zoukankan      html  css  js  c++  java
  • 如何使用jedis进行发布订阅

    jedis实现发布订阅,是通过让发布者和订阅者同时对某个channel(频道)进行操作,订阅者订阅了某个频道例如channel1,发布者往这个channel1里面publish东西,在pubsublistener的回调中就能收到这个消息。

    代码如下:

    源码工程:链接: https://pan.baidu.com/s/1nuSY99B 密码: huni

    1、订阅者

    package redis;
    
    import redis.clients.jedis.Jedis;
    
    class Subscribe {  
    
        public void redisSubscriber(final Jedis redisClient, final RedisMsgPubSubListener listener,final String channel ) {  
            new Thread(new Runnable() {  
                public void run() {  
                     System.out.println("订阅了:"+channel);  
                     redisClient.subscribe(listener, channel); 
                }  
            }).start();  
        }  
        public static void main(String args[]){
            new Subscribe().redisSubscriber(new RedisHelper().getJedis(), new RedisMsgPubSubListener(), "channel1");
        }
    }

    2.发布者

    package redis;
    
    import redis.clients.jedis.Jedis;
    
    public class Publish {
           public void redisPublish(final Jedis redisClient,String channel,String message) throws Exception{  
                redisClient.publish(channel,message);  
            }
           public static void main(String args[]){
               try {
                new Publish().redisPublish(new RedisHelper().getJedis(),"channel1","我是天才");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           }
    }

    3、redishelper

    package redis;
    import redis.clients.jedis.Jedis;
    
    /**
     * Created by cmq on 2017/1/9.
     */
    public class RedisHelper {
            public Jedis getJedis(){
                Jedis jedis = new Jedis("222.201.145.215");
                jedis.select(1);
                return jedis;
            }
    }

    4、RedisMsgPubSubListener

    package redis;
    
    import redis.clients.jedis.JedisPubSub;  
    
    public class RedisMsgPubSubListener extends JedisPubSub {  
         
        public void unsubscribe() {  
            super.unsubscribe();  
        }  
      
         
        public void unsubscribe(String... channels) {  
            super.unsubscribe(channels);  
        }  
      
         
        public void subscribe(String... channels) {  
            super.subscribe(channels);  
        }  
      
         
        public void psubscribe(String... patterns) {  
            super.psubscribe(patterns);  
        }  
      
         
        public void punsubscribe() {  
            super.punsubscribe();  
        }  
      
         
        public void punsubscribe(String... patterns) {  
            super.punsubscribe(patterns);  
        }  
      
         
        public void onMessage(String channel, String message) {  
            System.out.println("channel:" + channel + "receives message :" + message); 
            try {
                new Publish().redisPublish(new RedisHelper().getJedis(), "channel1", message+"第二次publish");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           // this.unsubscribe();  
        }  
      
         
        public void onPMessage(String pattern, String channel, String message) {  
      
        }  
      
         
        public void onSubscribe(String channel, int subscribedChannels) {  
            System.out.println("channel:" + channel + " is been subscribed:" + subscribedChannels);  
        }  
      
         
        public void onPUnsubscribe(String pattern, int subscribedChannels) {  
      
        }  
      
         
        public void onPSubscribe(String pattern, int subscribedChannels) {  
      
        }  
      
         
        public void onUnsubscribe(String channel, int subscribedChannels) {  
            System.out.println("channel:" + channel + "is been unsubscribed:" + subscribedChannels);  
        }  
    }  
  • 相关阅读:
    BZOJ 1176: [Balkan2007]Mokia
    BZOJ 4034: [HAOI2015]T2
    BZOJ 4031: [HEOI2015]小Z的房间
    BZOJ 4128: Matrix
    JSP学习-08-JavaBean
    JSP学习-标准标签库
    电影剧本写作基础
    JSP学习-09-自定义标签
    JSP学习-07Cookie 与Session
    JSP学习-06过滤器
  • 原文地址:https://www.cnblogs.com/caimuqing/p/6276897.html
Copyright © 2011-2022 走看看