开发者社区> java牛> 正文

ZeroMQ之Publish/Subscribe (Java)

简介: 前面的文章介绍了比较简单的Request/Subscribe模式, 这篇文章介绍更为经典的Publish/Subscribe通信模式用来ZeroMQ的实现,其通信方式如下图: 客户端(subscriber)向服务器(publisher)订阅消息,然后服务器可以将消息推送到所有订阅了消息的客户端,这里也可以理解为广播吧。
+关注继续查看

前面的文章介绍了比较简单的Request/Subscribe模式, 这篇文章介绍更为经典的Publish/Subscribe通信模式用来ZeroMQ的实现,其通信方式如下图:



客户端(subscriber)向服务器(publisher)订阅消息,然后服务器可以将消息推送到所有订阅了消息的客户端,这里也可以理解为广播吧。。。。


好了,闲话不多说了,直接上用ZeroMQ实现这种通信模式的代码吧:

(1)服务端(publisher):

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package pubsub;  
  2.   
  3.   
  4. import org.zeromq.ZMQ;  
  5.   
  6. public class Publisher {  
  7.     public static void main(String args[]) {  
  8.       
  9.         ZMQ.Context context = ZMQ.context(1);  //创创建包含一个I/O线程的context  
  10.         ZMQ.Socket publisher = context.socket(ZMQ.PUB);   //创建一个publisher类型的socket,他可以向所有订阅的subscriber广播数据  
  11.           
  12.         publisher.bind("tcp://*:5555");  //将当前publisher绑定到5555端口上,可以接受subscriber的订阅  
  13.           
  14.         while (!Thread.currentThread ().isInterrupted ()) {  
  15.             String message = "fjs hello";  //最开始可以理解为pub的channel,subscribe需要订阅fjs这个channel才能接收到消息  
  16.             publisher.send(message.getBytes());  
  17.         }  
  18.   
  19.         publisher.close();  
  20.         context.term();  
  21.     }  
  22. }  

代码很简单吧,这里publisher来充当服务端,所有的subscriber都需要建立于publisher的连接。,,。,


(2)客户端(subscriber)代码:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package pubsub;  
  2.   
  3. import org.zeromq.ZMQ;  
  4.   
  5. public class Subscriber {  
  6.     public static void main(String args[]) {  
  7.         for (int j = 0; j < 100; j++) {  
  8.             new Thread(new Runnable(){  
  9.   
  10.                 public void run() {  
  11.                     // TODO Auto-generated method stub  
  12.                     ZMQ.Context context = ZMQ.context(1);  //创建1个I/O线程的上下文  
  13.                     ZMQ.Socket subscriber = context.socket(ZMQ.SUB);     //创建一个sub类型,也就是subscriber类型的socket  
  14.                     subscriber.connect("tcp://127.0.0.1:5555");    //与在5555端口监听的publisher建立连接  
  15.                     subscriber.subscribe("fjs".getBytes());     //订阅fjs这个channel  
  16.                       
  17.                     for (int i = 0; i < 100; i++) {  
  18.                         byte[] message = subscriber.recv();  //接收publisher发送过来的消息  
  19.                         System.out.println("receive : " + new String(message));  
  20.                     }  
  21.                     subscriber.close();  
  22.                     context.term();  
  23.                 }  
  24.                   
  25.             }).start();  
  26.         }  
  27.           
  28.           
  29.     }  
  30. }  

这里需要注意订阅的channel问题,如果这里错了的话,subscriber是不会受到publisher发送过来的数据的


好了,到这里publish/subscribe的实现就算ok了

若转载请注明出处!若有疑问,请回复交流!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
9120 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
12550 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19766 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18025 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24821 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
17047 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11772 0
+关注
java牛
善于分享,乐于分享
281
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载