jedis实现订阅发布-publish/subscribe
本文由larrylgq编写,转载请注明出处:http://blog.csdn.net/larrylgq/article/details/7395261
作者:吕桂强
邮箱:larry.lv.word@gmail.com
本例包括
jedis_demo:入口类
jedis_control:jedis控制器(jedis的连接池)
jedis_pub_sub_listener:订阅的监听器
singleton_agent:单例的代理类(连接池配置)
package com.larry.jedis;import redis.clients.jedis.Jedis;/*** 入口类* @author 吕桂强* @email larry.lv.word@gmail.com* @version 创建时间:2012-3-28 下午12:12:41*/
public class jedis_demo {jedis_control redis_util = jedis_control.get_singleton();public static void main(String[] args) {jedis_demo jedis_demo = new jedis_demo();new Thread(new Runnable(){@Overridepublic void run() {jedis_control redis_util = jedis_control.get_singleton();Jedis jedis = redis_util.get_connection();jedis_pub_sub_listener pub_sub_listener = new jedis_pub_sub_listener();// 可以订阅多个频道// 订阅得到信息在lister的onMessage(...)方法中进行处理// jedis.subscribe(listener, "news.share", "news.log");// jedis.subscribe(listener, new String[]{"news.share","news.log"});jedis.psubscribe(pub_sub_listener, new String[] { "news.share" });// 使用模式匹配的方式设置频道}}).start();jedis_demo.publish();}/*** 发布*/public void publish() {Jedis jedis = redis_util.get_connection(); jedis.publish("news.share", "ok"); jedis.publish("news.share", "hello word"); }
}
package com.larry.jedis;import redis.clients.jedis.Jedis;/*** jedis控制器* @author 吕桂强* @email larry.lv.word@gmail.com* @version 创建时间:2012-3-28 下午12:03:40*/
public final class jedis_control {//单例private static jedis_control _jedis_control;public static jedis_control get_singleton(){if(_jedis_control == null){_jedis_control = new jedis_control();}return _jedis_control;}/** * 获取连接实例 * @return jedis */ public Jedis get_connection() {Jedis jedis = null; try { jedis = singleton_agent.get_jedispool().getResource(); } catch (Exception e) { e.printStackTrace(); } return jedis; } /** * 释放数据库连接 * @param conn */ public void close_connection(Jedis jedis) { if (null != jedis) { try { singleton_agent.get_jedispool().returnResource(jedis); } catch (Exception e) {e.printStackTrace(); } } }
}
package com.larry.jedis;import redis.clients.jedis.JedisPubSub;/*** 监听订阅事件* @author 吕桂强* @email larry.lv.word@gmail.com* @version 创建时间:2012-3-28 下午12:09:20*/
public class jedis_pub_sub_listener extends JedisPubSub {// 取得订阅的消息后的处理public void onMessage(String channel, String message) {System.out.println(channel + "=" + message);}// 初始化订阅时候的处理public void onSubscribe(String channel, int subscribedChannels) {System.out.println(channel + "=" + subscribedChannels);}// 取消订阅时候的处理public void onUnsubscribe(String channel, int subscribedChannels) {System.out.println(channel + "=" + subscribedChannels);}// 初始化按表达式的方式订阅时候的处理public void onPSubscribe(String pattern, int subscribedChannels) {System.out.println(pattern + "=" + subscribedChannels);}// 取消按表达式的方式订阅时候的处理public void onPUnsubscribe(String pattern, int subscribedChannels) {System.out.println(pattern + "=" + subscribedChannels);}// 取得按表达式的方式订阅的消息后的处理public void onPMessage(String pattern, String channel, String message) {System.out.println(pattern + "=" + channel + "=" + message);}
}
package com.larry.jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** 所有单例的代理类* @author 吕桂强* @email larry.lv.word@gmail.com* @version 创建时间:2012-3-28 下午12:30:42*/
public class singleton_agent {//****************单例一个连接池***************private static JedisPool jedispool = null;/** * 获取连接池 * @return 数据源 */ public static JedisPool get_jedispool() {if(jedispool == null){JedisPoolConfig jedispool_config = new JedisPoolConfig();jedispool_config.maxActive = 20;jedispool_config.maxIdle = 0;jedispool_config.maxWait = 1000;jedispool_config.testOnBorrow = true;jedispool = new JedisPool(jedispool_config, "localhost", 6379);}return jedispool; }//end****************单例一个连接池***************
}
jedis实现订阅发布-publish/subscribe相关推荐
- AKKA 集群中的发布与订阅Distributed Publish Subscribe in Cluster
Distributed Publish Subscribe in Cluster 基本定义 在单机环境下订阅与发布是很常用的,然而在集群环境是比较麻烦和不好实现的: AKKA已经提供了相应的实现,集群 ...
- RabbitMQ入门:发布/订阅(Publish/Subscribe)
在前面的两篇博客中 RabbitMQ入门:Hello RabbitMQ 代码实例 RabbitMQ入门:工作队列(Work Queue) 遇到的实例都是一个消息只发送给一个消费者(工作者),他们的消息 ...
- RabbitMQ消息队列:发布/订阅(Publish/Subscribe)
2019独角兽企业重金招聘Python工程师标准>>> 前面我们把每个Message都是deliver到某个单一的Consumer.今天我们将了解如何把同一个Message deli ...
- RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
2019独角兽企业重金招聘Python工程师标准>>> 发布/订阅 在上篇教程中,我们搭建了一个工作队列.每个任务之分发给一个工作者(worker).在本篇教程中,我们要做的之前完全 ...
- RabbitMQ 入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
发布/订阅 在上篇第二部分教程中,我们搭建了一个工作队列.每个任务之分发给一个工作者(worker).在本篇教程中,我们要做的之前完全不一样--分发一个消息给多个消费者(consumers).这种模式 ...
- RabbitMQ系列教程之三:发布\/订阅(Publish\/Subscribe)
在前一个教程中,我们创建了一个工作队列.工作队列背后的假设是每个任务会被交付给一个[工人].在这一部分我们将做一些完全不同的事情--我们将向多个[消费者]传递信息.这种模式被称为"发布/订阅 ...
- Java实现Redis的订阅发布功能,亲测可以
文章目录 简介 Redis发布订阅 Java发布订阅 简介 首先我们得知道,当一个用户订阅了某个频道,那么他就会一直在那监听该频道是否发出消息,是一种阻塞的状态,所以,我们把订阅功能用多线程来实现,给 ...
- Redis发布与订阅——PUBLISH SUBSCRIBE
2019独角兽企业重金招聘Python工程师标准>>> Redis发布与订阅--PUBLISH & SUBSCRIBE 一般来说,发布与订阅(又称pub/sub)的特点是 ...
- jquery订阅发布插件代码草稿,为jquery扩展jquery.publish,jquery.subscribe方法
jquery订阅发布插件代码草稿! jquery订阅发布插件代码草稿,为jquery扩展jquery.publish,jquery.subscribe方法 --- jquery订阅发布插件代码草稿 & ...
最新文章
- 大数据告诉你80、90后的真实负债
- Android之使用Jsoup抓取网络数据
- DayDayUp:《复仇者联盟4:终局之战》娱乐闲谈——当灭霸碰上一个处女座的程序猿
- const的用法,特别是用在函数前面与后面的区别
- canal原理的一些学习-1(canal的一些原理性介绍)
- shields 徽标_到处都有平面徽标
- switch变量的作用 域问题
- C语言中二维数组移动一行,二维数组对每一行进行排序。。
- Java—一篇读懂java集合(Collection/Map)及Lambda表达式
- map std 浮点数索引_C std :: map持有任何类型的值
- VMware12部署windows xp虚拟机
- XSpreadsheet-在线表格插件
- [含论文+ppt+任务书+源码等]S2SH基于java的保险业务管理系统
- char在mysql中的意思_mysql中char表示什么意思
- Windows10 DNS被劫持 - 解决方案
- win7开机启动项设置_Win7电脑如何提高开机速度?
- h3c smart link
- c语言编译器 控制unix 故事,互联网发展史人物篇:布莱恩·克尼汉(Brian Kernighan)——Unix和C语言背后的巨人...
- 欧盟委员会的目标是在国际舞台上为欧盟开发区块链技术的共同方法。
- 富士康对苹果死心塌地,然而突然传出的消息却让富士康懵了
热门文章
- HTML简单的网页制作期末作业【NBA勒布朗詹姆斯篮球明星】HTML+CSS+JavaScript
- 12、 Android+RK3399 pro+USB直连摄像头+NCNN+Nanodet进行检测
- 将树莓派连接到显示器
- c 语言 如何设置串口波特率,串口自动波特率设置程序
- python-函数(function)
- Java-Collection集合和Map集合总结
- audio自动播放遇到的问题
- 计算机8G内存是ram还是rom,128G的机身储存和8G的RAM运存,哪个更重要,千万别选错...
- E/WindowManager: android.view.WindowLeaked: Activity com.xxx.xxx.xxx has leaked window com.android.i
- Python界面编程第八课:Pyside2 (Qt For Python)打开关于窗口