5.redis发布/订阅
来源:互联网 发布:kdl32w600d安装软件 编辑:程序博客网 时间:2024/06/01 10:03
<pre name="code" class="java"><span style="font-size:18px;"><strong>redis发布/订阅</strong></span>/** * 1.发布 */public class Publisher { protected static Logger logger = LoggerFactory.getLogger(MessageTest.class); public static final String CHANNEL_NAME = "commonChannel";//频道名称 //发布 public static void publish() { JedisPoolConfig poolConfig = new JedisPoolConfig(); JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379, 0); final Jedis publisherJedis = jedisPool.getResource();//发布 publisherJedis.publish(CHANNEL_NAME, "发布的消息aaa"); System.out.println("publisher over"); jedisPool.returnResource(publisherJedis); } public static void main(String[] args) { publish(); } }/** * 2.订阅--处理消息 */public class Subscriber extends JedisPubSub{ protected static Logger logger = LoggerFactory.getLogger(Subscriber.class); // 取得订阅的消息后的处理 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 onPMessage(String pattern, String channel, String message) { System.out.println("取得按表达式的方式订阅的消息后的处理 :" + pattern + "=" + channel + "=" + message); } // 初始化按表达式的方式订阅时候的处理 public void onPSubscribe(String pattern, int subscribedChannels) { System.out.println("初始化按表达式的方式订阅时候的处理 : " + pattern + "=" + subscribedChannels); } // 取消按表达式的方式订阅时候的处理 public void onPUnsubscribe(String pattern, int subscribedChannels) { System.out.println(" 取消按表达式的方式订阅时候的处理 : " + pattern + "=" + subscribedChannels); } } /** * SUBSCRIBE [channel...] 订阅一个匹配的通道 * PSUBSCRIBE [pattern...] 订阅匹配的通道 * PUBLISH [channel] [message] 将value推送到channelone通道中 * UNSUBSCRIBE [channel...] 取消订阅消息 * PUNSUBSCRIBE [pattern ...] 取消匹配的消息订阅 * web环境中可以编写一个JedisPubSub 继承 @see redis.clients.jedis.JedisPubSub来实现监听 * Jedis中通过使用 JedisPubSub.UNSUBSCRIBE/PUNSUBSCRIBE 来取消订阅 *//** * 3.发布/订阅 */public class MessageTest { protected static Logger logger = LoggerFactory.getLogger(MessageTest.class); public static final String CHANNEL_NAME = "commonChannel"; //频道 public static void main(String[] args) throws Exception { JedisPoolConfig poolConfig = new JedisPoolConfig(); JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379, 0); final Jedis subscriberJedis = jedisPool.getResource();//订阅 final Subscriber subscriber = new Subscriber();//消息的处理 new Thread(new Runnable() { @Override public void run() { try { //subscribe方法会阻塞,需要另起线程 subscriberJedis.subscribe(subscriber, CHANNEL_NAME); } catch (Exception e) { logger.error("Subscribing failed.", e); } } }).start(); Thread.sleep(2000); //发布 Publisher.publish(); System.out.println("unsubscribe"); //subscriber.unsubscribe();//取消订阅 //jedisPool.returnResource(subscriberJedis); } }
参考: <a target=_blank href="http://outofmemory.cn/code-snippet/3866/redis-dingyue-publish-example">http://outofmemory.cn/code-snippet/3866/redis-dingyue-publish-example</a>
0 0
- 5.redis发布/订阅
- 六.redis 发布订阅
- Redis:六、发布、订阅
- .redis 发布订阅
- 六.redis 发布订阅
- Redis:六、发布、订阅
- redis代码 发布订阅
- Redis 发布与订阅
- redis发布和订阅
- Redis 发布订阅
- Redis 发布与订阅
- Redis 订阅与发布
- Redis 发布与订阅
- redis实现发布/订阅
- Redis发布订阅模式
- redis 订阅 发布
- Redis 发布订阅
- Redis-发布与订阅
- this android sdk requires a...adt
- patch,diff相关知识整理
- 爬楼梯
- ActiveMQ消息系统研究与学习
- Spark性能优化第二季
- 5.redis发布/订阅
- CreateProcess的当前进程的当前目录
- Android中的MVP
- linux时间同步配置
- theano学习指南2(翻译)-对数回归分类器
- JAVA中堆和栈的区别
- PSR-4——新鲜出炉的PHP规范
- 操作 excel 读 xlrd
- 深入理解 Comparable 接口和 Comparator 接口以及Arrays.sort()