Pom文件
<dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.zeromq</groupId> <artifactId>jzmq</artifactId> <version>2.1.0</version> </dependency> </dependencies>
消息发布:
package com.giant.test.jzmq; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zeromq.ZMQ; import org.zeromq.ZMQ.Context; import org.zeromq.ZMQ.Socket; /** * 先启动订阅者: * java -Djava.library.path=/usr/local/lib -cp $(echo ./*.jar | tr ' ' ':') com.giant.test.jzmq.Subscriber * 再启动发送者: * java -Djava.library.path=/usr/local/lib -cp $(echo ./*.jar | tr ' ' ':') com.giant.test.jzmq.Publisher * <p>Description: </p> * @author wankun * @date 2014年6月9日 * @version 1.0 */ public class Publisher { // 等待10个订阅者 private static final int SUBSCRIBERS_EXPECTED = 10; // 定义一个全局的记录器,通过LoggerFactory获取 private final static Logger log = LoggerFactory.getLogger(Publisher.class); public static void main(String[] args) throws InterruptedException { Context context = ZMQ.context(1); Socket publisher = context.socket(ZMQ.PUB); publisher.bind("tcp://*:5557"); try { // zmq发送速度太快,在订阅者尚未与发布者建立联系时,已经开始了数据发布 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } publisher.send("send start......".getBytes(), 0); for (int i = 0; i < 10; i++) { publisher.send(("Hello world " + i).getBytes(), ZMQ.NOBLOCK); } publisher.send("send end......".getBytes(), 0); publisher.close(); context.term(); } }
消息订阅:
package com.giant.test.jzmq; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zeromq.ZMQ; import org.zeromq.ZMQ.Context; import org.zeromq.ZMQ.Socket; public class Subscriber { // 定义一个全局的记录器,通过LoggerFactory获取 private final static Logger log = LoggerFactory.getLogger(Subscriber.class); public static void main(String[] args) { Context context = ZMQ.context(1); Socket subscriber = context.socket(ZMQ.SUB); subscriber.connect("tcp://127.0.0.1:5557"); subscriber.subscribe("".getBytes()); int total = 0; while (true) { byte[] stringValue = subscriber.recv(0); String string = new String(stringValue); if (string.equals("send end......")) { break; } total++; System.out.println("Received " + total + " updates. :" + string); } subscriber.close(); context.term(); } }
相关推荐
请看例子程序jzmq.war里的Hwserver.java 和Hwclient.java 服务器端(Hwserver.java) 1. 创建上下文, 初始化一个ZMQ.Context 2. 创建一个socket,通过context.socket(ZMQ.REP);//相应的zermq的socket, 比如req, rep, ...
libzmq + jzmq Windows x64 发布文件 编译好的ZeroMQ的Windows X64发布文件。
已经编译好的jzmq的库文件 linux下的,非常好用。
ZeroMQ jzmq的发布文件(32位),64位请参考我的另外一个资源。 jar采用jdk 1.8编译。
zeromq的pub-sub订阅模式的jave实现,Eclipse下的maven工程,相关引用已在pom文件引入,可以直接运行。
自己手动生成jzmq过程中, 坑颇多, 直接调用JZMQ的库能够节省更多的时间. 也更符合javer 风格. 特上传一份共享 jzmq 库说明: libzmq 软件版本 4.04 , 基于VS2013编译生成所得 jdk 1.8 默认为32bit jdk
编译好的jzmq so
jzmq.tag
jzmq源代码
jzmq-master.zip
32位环境下jzmq所依赖的库文件和jar文件。包含jzmq.dll,libzmq.dll和zmq.jar.32位win7下亲测可用
zeromq jzmq 64bit打包,有步骤截图,实例代码,你值得拥有
64位操作系统,jzmq动态链接库和jar
具体编译参考https://mp.csdn.net/postedit/82218923,本人使用vs2017 ,zeromq4-x-4.0.5,jzmq-3.1.0,64位 window7 jdk8编译
jzmq 是 ZeroMQ (libzmq)的 Java 版本,通过 JNI 实现以达到最高性能。不过 ZeroMQ 也提供了纯 Java 实现的版本 —— JeroMQ。 标签:jzmq
包含zmq.jar jzmq.dll libzmq.dll 解压到自己java路径(根据个人java路径)D:\Program Files\Java\jdk1.8.0_202\bin win系统变量 path 没有的话增加一行 D:\Program Files\Java\jdk1.8.0_202\bin
英文版的,没办法,将就用吧,在线文档上扣出来的。
在 linux redhat 上安装zeromq 和 jzmq