如图所示:
发布者发布消息到频道,订阅了频道的订阅者可以收到消息,订阅者可以订阅不同的频道。
命令 | 含义 |
---|---|
publish channel message | 向指定的channel中发布消息 |
subscribe channel1 [channel2...] | 订阅给定的一个或多个渠道的消息 |
unsubcribe [channel1 [channel2...]] | 取消订阅给定的一个或多个渠道的消息 |
psubscribe pattern1 [pattern2...] | 订阅一个或多个符合给定模式的频道 |
punsubscribe [pattern1 [pattern2...]] | 退订所有给定模式的频道 |
pubsub channel | 列出至少有一个订阅者的频道 |
pubsub numsub [channel...] | 列出给定频道的订阅者数量 |
我们来看一张消息队列通信模型的图:
可以看到:
发布订阅模式是将消息通知每一个订阅者,消息队列是消息发布者发表消息后只有一个消息订阅者收得到,订阅者争抢接受消息,这是一个抢的功能。
//订阅
public void testSubscribe() {
Jedis jedis = new Jedis("127.0.0.1" , 6381);
jedis.subscribe(new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println("receive channel ["+channel+"] message ["+message+"]");
}
} , "aliTV" , "googleTV");
}
//发布
public void testPublish() {
Jedis jedis = new Jedis("127.0.0.1" , 6381);
jedis.publish("aliTV" , "I am xxx");
jedis.publish("googleTV" , "My age is 21");
}