Jedis实现频道的订阅,取消订阅

第一步:建立一个监听类,继承JedisPubSub

package work;

import redis.clients.jedis.JedisPubSub;

/**
 * 监听
 * author:songyan
 * date: 2019/10/17
 **/
public class MyListener  extends JedisPubSub {
    private String subName;
    public MyListener(String subName) {
        this.subName = subName;
    }

    // 取得订阅的消息后的处理
    public void onMessage(String channel, String message) {
        System.out.println(String.format("订阅者:"+ subName + "接收消息,频道:%s,消息%s" , channel , message));
    }

    // 初始化订阅时候的处理
    public void onSubscribe(String channel, int subscribedChannels) {
        System.out.println(String.format("订阅者:"+ subName + "订阅频道成功,频道:%s,订阅频道数%d" , channel  , subscribedChannels));
    }

    // 取消订阅时候的处理
    public void onUnsubscribe(String channel, int subscribedChannels) {
        System.out.println(String.format("订阅者:"+ subName + "取消订阅成功,频道名称:%s,订阅频道数%d",channel , subscribedChannels));
    }
}

第二步:建立一个Publisher (发布者)

package work;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 发布
 * author:songyan
 * date: 2019/10/17
 **/
public class Publisher  extends Thread  {
    //定义一个连接池
    private final JedisPool jedisPool;

    private String chanelName;

    public Publisher(JedisPool jedisPool, String chanelName) {
        this.jedisPool = jedisPool;
        this.chanelName = chanelName;
    }

    @Override
    public void run() {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        Jedis jedis = jedisPool.getResource();
        while (true) {
            String line = null;
            try {
                line = reader.readLine();
                if (!"quit".equals(line)) {
                    jedis.publish(chanelName, line);
                    System.out.println("发布者频道发布成功,频道名称:" + chanelName);
                } else {
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
    }

第三步:创建一个订阅者类,用来控制订阅者订阅消息频道

---恢复内容结束---

猜你喜欢

转载自www.cnblogs.com/excellencesy/p/11696580.html