每次学习新东西,接触新领域的时候,常常会想学了后能应用到什么地方。用了它能改善什么东西,为什么非他不可?
1.订阅与发布是啥:我个人的理解是:你关注了某个人,他发了一条信息,你能马上知道。
知道了是啥,有哪些技术能实现我需要的这种功能呢:脑海里,网上搜索一番,发现类似的开源产品还是很多的。譬如:Redis,ActiveMQ,RabbitMQ等等。
先来说说理论上的的实现:以Redis为例:java来实现。
第一步:订阅频道:继承JedisPubSub,重写其下的多个方法:然后写个主方法去订阅:
public class PubRedis extends JedisPubSub{
@Override
public void onMessage(String channel, String message) {
System.out.println("消息: 来自频道["+channel+"], 的消息:["+message+"]");
}
@Override
public void onPMessage(String pattern, String channel, String message) {
System.out.println("模式:"+pattern);
System.out.println("频道:"+channel);
System.out.println("消息:"+message);
}
@Override
public void onSubscribe(String channel,int subscribedChannels) {
System.out.println("onSubscribe: channel["+channel+"],"+
"subscribedChannels["+subscribedChannels+"]");
}
@Override
public void onUnsubscribe(String channel,int subscribedChannels) {
System.out.println("onUnsubscribe: channel["+channel+"], "+
"subscribedChannels["+subscribedChannels+"]");
}
@Override
public void onPUnsubscribe(String pattern,int subscribedChannels) {
System.out.println("onPUnsubscribe: pattern["+pattern+"],"+
"subscribedChannels["+subscribedChannels+"]");
}
@Override
public void onPSubscribe(String pattern,int subscribedChannels) {
System.out.println("onPSubscribe: pattern["+pattern+"], "+
"subscribedChannels["+subscribedChannels+"]");
}
public static void main(String[] args) {
Jedis jr = null;
try {
jr = new Jedis("localhost", 6379, 0);//redis服务地址和端口号
PubRedis sp = new PubRedis();
sp.proceed(jr.getClient(),"news.share", "news.blog"); //订阅了"news.share", "news.blog"两个频道
//sp.proceedWithPatterns(jr.getClient(), "news.*");
} catch (Exception e) {
e.printStackTrace();
}
finally{
if(jr!=null){
jr.disconnect();
}
}
}
}
订阅完后写个发布的类:让某个频道发布消息,那么订阅了该频道的,将收到消息:
public class PublishMasage {
public static void main(String str[])
{
Jedis jr = null;
try {
jr = new Jedis("localhost", 6379, 0);//redis服务地址和端口号
jr.publish("news.blog", "发一条只有1和2都有的");
} catch (Exception e) {
e.printStackTrace();
}
finally{
if(jr!=null){
jr.disconnect();
}
}
}
}
这边是一个大致机制的一种实现。