http://my.oschina.net/cloudcoder/blog/200989
一、环境搭建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz tar -xzf zeromq-2.1.7.tar.gz cd zeromq-2.1.7 ./configure make sudo make install git clone https://github.com/nathanmarz/jzmq.git cd jzmq ./autogen.sh ./configure make sudo make install 如果没有安装libtool、libuuid-devel则需要先安装,否则安装失败 yum install libtool yum install libuuid-devel |
常见问题:
出现java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory异常
原因是未找到zmq动态链接库。
解决方法1:export LD_LIBRARY_PATH=/usr/local/lib
解决方法2:编辑/etc/ld.so.conf文件,增加一行:/usr/local/lib。再执行sudo ldconfig命令
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jzmq in java.library.path
未设置native library
在eclipse设置native library为/usr/local/lib
或在jvm增加参数
-Djava.library.path=/usr/local/lib
或在启动脚本中增加
java -Djava.library.path=/usr/local/lib
二、使用jzmq进行编程
1.创建maven项目,pom.xml的内容参见pom.xml
注意:jzmq的版本不能太高,建议使用2.1.0,目前storm也是使用这个版本的jzmq-2.1.0.jar
否则报: java.lang.UnsatisfiedLinkError: org.zeromq.ZMQ$Socket.nativeInit()V
2.编写Publisher.java,Subscriber.java,参见源代码
Publisher.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package com.catt.mqtest.pubsub;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zeromq.ZMQ;
import org.zeromq.ZMQ.Context;
import org.zeromq.ZMQ.Socket;
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();
}
} |
Subscriber.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package com.catt.mqtest.pubsub;
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://192.168.230.128: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();
}
} |
pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion >4.0.0</ modelVersion >
< groupId >com.catt</ groupId >
< artifactId >mqtest</ artifactId >
< version >0.0.1-SNAPSHOT</ version >
< packaging >jar</ packaging >
< name >mqtest</ name >
< url >http://maven.apache.org</ url >
< properties >
< project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding >
</ properties >
< dependencies >
< dependency >
< groupId >org.zeromq</ groupId >
< artifactId >jzmq</ artifactId >
< version >2.1.0</ version >
</ dependency >
< dependency >
< groupId >ch.qos.logback</ groupId >
< artifactId >logback-classic</ artifactId >
< version >1.1.1</ version >
</ dependency >
< dependency >
< groupId >junit</ groupId >
< artifactId >junit</ artifactId >
< version >4.10</ version >
< scope >test</ scope >
</ dependency >
</ dependencies >
</ project >
|
相关推荐
zeromq-2.1.7.tar.gz 的早期的一个版本,本人已安装成功 放心使用
zeromq-4.3.2.tar.gz,可在linux下编译安装,能够使用zeromq进行sorket开发,多线程,提升性能,效率,可以配合msgpack进行使用,是个好的扩展插件
0MQ version 4.3.4 stable, released on 2021/01/17
zeromq-4.0.3.tar.gz zeromq-4.0.3.tar.gz zeromq-4.0.3.tar.gz
VS2015 在Widows 10 上编译的 ZeroMQ 4.3.2,JZMQ 3.1 CZMQ 4.2,可以在 JDK 1.8 下运行。DLL 都是 64位,包含了编译及运行相关信息。分享一下,也给自己留个备份
zeromq-4.1.3.tar.gz,最新的zeromq的开发工具包,希望对开发者有用
zeromq-4.0.7源码,被墙的可以下载使用。
zeroMQ 4.2.3版本 zeromq-4.2.3.tar.gz 欢迎关注我的CSDN博客:https://mp.csdn.net/console/home 免积分下载
zeromq-2.1.9.tar.gz 这是zeromq linux 官方原版 请放心下载
zeromq-4.2.3.tar.gz 一个稳定的版本,可以安装使用!
zeromq-4.1.8.tar.gz 有问题请联系
zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-2.1.7zeromq-...
ZeroMQ-4.0.4 WINSOW最新版本
ZeroMQ(也说明 ØMQ,0MQ 或 ZMQ)是一个高性能的异步消息库,旨在使用分布式或并行应用程序。它提供了一个消息队列,但 不同于面向消息的中间件,一个 ZeroMQ 系统可以在没有专用运行消息代理。jzmq安装包,本人也...
Jzmq版本:3.0.1 ZeroMQ版本:4.0.4 Jzmq-MAVEN地址,版本:3.1.0 http://www.mvnrepository.com/artifact/org.zeromq/jzmq 使用方法: 1.项目中加入jzmq的maven配置 2.将两个dll文件放到java/jdk...3.代码中使用jzmq
ZeroMQ是一个开源的消息队列系统,按照官方的定义,它是一个消息通信库,帮助开发者设计分布式和并行的应用程序。 首先,我们需要明白,ZeroMQ不是传统的消息队列系统(比如ActiveMQ、WebSphereMQ、RabbitMQ等)。...
在官网下载zeromq太慢了,网速极不稳定,特意下载放在这里供大家下载,当然象征性地赚点 资源分
zeromq是史上最快的消息队列,是基于c#编程偶dll文件
ZeroMQ—指导 由iMatix公司的首席执行官Pieter Hintjens |hp#moc.xitami|hp>编写。感谢Bill Desmarais, Brian Dorsey, CAF, Daniel Lin, Eric Desgranges, Gonzalo Diethelm, Guido Goldstein, Hunter Ford, Kamil ...
zeromq著名的消息分发系统,跨平台C源代码