Redis Pub/Sub (Java)

經典的廣播/訂閱模式,看看Redis的java如何實現:java

 

JedisPubSub是一個抽象類,通常應該繼承它,實現本身的邏輯,實現抽象方法,ide

在抽象方法中調用本身的邏輯便可。繼承

  • 訂閱

@Test
    public void subscribe_test() {
        JedisPool pool = new JedisPool(new JedisPoolConfig(), host, port,
                timeout); get

        Jedis jedis = pool.getResource();
        JedisPubSub jedisPubSub = new JedisPubSub() {
            @Override
            public void onUnsubscribe(String channel, int number) {
                System.out.println("channel: "+channel);
                System.out.println("number :"+number);
            }
            @Override
            public void onSubscribe(String channel, int number) {
                System.out.println("channel: "+channel);
                System.out.println("number :"+number);
            }
            @Override
            public void onPUnsubscribe(String arg0, int arg1) {
            }
            @Override
            public void onPSubscribe(String arg0, int arg1) {
            }
            @Override
            public void onPMessage(String arg0, String arg1, String arg2) {
            }
            @Override
            public void onMessage(String channel, String msg) {
                System.out.println("收到頻道 : 【" + channel +" 】的消息 :" + msg);
            }
        };
        jedis.subscribe(jedisPubSub, new String[]{"channel1","channel2"});
        pool.returnResource(jedis);
    }test

 

  • 發佈
        @Test
        public void publish_test() {
            JedisPool pool = new JedisPool(new JedisPoolConfig(), host, port,
                    timeout);

        Jedis jedis = pool.getResource();
        long i = jedis.publish("channel1", "channel1的朋友們,大家好嗎?親");
        System.out.println(i+" 個訂閱者接受到了 channel1 消息");
        i = jedis.publish("channel2", "你好呀,親");
        System.out.println(i+" 個訂閱者接受到了 channel2 消息");
        pool.returnResource(jedis);
    }channel

相關文章
相關標籤/搜索