首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Jedis撤消订阅的运用

2012-06-26 
Jedis取消订阅的运用个人学习参考所用,勿喷!?接上篇博客《Jedis的Publish/Subscribe功能的运用?》http://kin

Jedis取消订阅的运用

个人学习参考所用,勿喷!

?

接上篇博客《Jedis的Publish/Subscribe功能的运用?》http://kingxss.iteye.com/blog/1420264

?

? ? ? 博客中根据Jedis的API,将自己对JedisPubSub抽象类的实现MyListener的实例对象传入到Jedis对象的psubscribe(...)方法中。博客中的第五步中可以见到如下代码:

?

jedis.psubscribe(listener, new String[]{"hello_*"});

? ? ? 查阅JedisPubSub的源码可以见到如下的方法(其他方法和具体代码已经忽略):?

?

public abstract class JedisPubSub {...//取消所有订阅    public void unsubscribe() {        ...    }//取消订阅频道    public void unsubscribe(String... channels) {        ...    }//增加订阅频道    public void subscribe(String... channels) {       ...    }//增加订阅频道的匹配表达式    public void psubscribe(String... patterns) {        ...    }//取消所有按表达式的订阅    public void punsubscribe() {        ...    }//取消表达式匹配的频道    public void punsubscribe(String... patterns) {        ...    }...}
?

?? 从代码中可以看到这里有取消订阅的方式。具体使用按如下步骤:


1.进行订阅
??? 这里以按表达式方式订阅为例,这里用线程的方式启动订阅,因为在订阅后代码会阻塞监听发布的内容,代码不会继续在Main线程中执行。具体代码如下:

?

ApplicationContext ac = SingletonContext.getInstance();RedisUtil ru = (RedisUtil) ac.getBean("redisUtil");final Jedis jedis = ru.getConnection();final MyListener listener = new MyListener();new Thread(new Runnable() {@Overridepublic void run() {jedis.psubscribe(listener, new String[] { "whty_*","demo_*" });}}).start();

?? 这里进行订阅了两个表达式频道。

2.取消订阅
??? 这里以取消上述订阅中的“demo_*”表达式频道为例。具体代码如下:

?

listener.punsubscribe(new String[] { "demo_*" });?

??? 这里取消了部分频道订阅。要注意的是,这里的listener就是上面步骤中的listener。

3.运行如下的测试代码:

?

ApplicationContext ac = new ClassPathXmlApplicationContext("beans-config.xml");RedisUtil ru = (RedisUtil) ac.getBean("redisUtil");Jedis jedis = ru.getConnection();jedis.publish("whty_foo", "bar123");jedis.publish("whty_test", "hello watson");jedis.publish("demo_foo", "hello demo foo");jedis.publish("demo_test", "hello demo test");
?

4.可得如下结果:

?

whty_*=whty_foo=bar123whty_*=whty_test=hello watson
?

从上面的运行结果可以看到取消订阅已经成功。

?

1 楼 stwei1983 2012-04-06   很有用处,谢谢

热点排行