一、环境搭建

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 installgit 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

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

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

<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--使用jzmq进行编程相关推荐

  1. Linux(CentOS)安装配置zeromq、jzmq(解决各种问题)

    今天为Hadoop配置zeromq.jzmq遇到各种问题,先是编译出错,到编译成功后测试出错等等,下面将我遇到的问题与大家分享一下. 第一个注意点是:必须先编译安装zeromq,然后在编译jzmq,否 ...

  2. Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...

  3. RabbitMQ, ZeroMQ, Kafka 是一个层级的东西吗, 相互之间有哪些优缺点

    RabbitMQ是一个AMQP实现,传统的messaging queue系统实现,基于Erlang.老牌MQ产品了.AMQP协议更多用在企业系统内,对数据一致性.稳定性和可靠性要求很高的场景,对性能和 ...

  4. 详解c语言编程库题,详解C语言编程

    C语言作为编程语言,其诞生已经很早,但是在编程语言多样化的今天,C仍然高居TIOBE编程语言排行榜的第一位(2014年5月),而C++语言排位第四.而位居第二位的Java本身就是脱胎于C++语言,第三 ...

  5. 【转载】我的编程之路——知识管理与知识体系

    [https://segmentfault.com/a/1190000004612590] 本文的资料放到了Github Repo (本文介绍的这种笔记排布方式不一定适合于初学者理解) 六年前笔者开始 ...

  6. [Ubuntu]Scrcpy+Zeromq实现手机屏幕yuv数据传输,并通过OpenCV实现连续播放——(二)(思路+代码解析)

    Scrcpy在上一篇博客中有所介绍,并且使用Scrcpy实现了手机屏幕yuv数据的提取([Ubuntu]Scrcpy获取手机屏幕yuv数据_又是谁在卷的博客-CSDN博客).本文将介绍一个当下较为好用 ...

  7. 阿里的STORM——JSTORM

    看介绍文档貌似挺好: https://github.com/alibaba/jstorm 阿里拥有自己的实时计算引擎 类似于hadoop 中的MR 开源storm响应太慢 开源社区的速度完全跟不上Al ...

  8. linux下storm集群配置,Twitter Storm 系统集群搭建

    Storm是什么? Storm是Twitter开源的一个分布式的实时计算系统 使用场景: 数据的实时分析.持续计算.分布式RPC等等. Storm特点(Storm类似手扶电梯,不出故障就会一直运行,h ...

  9. storm 分布式的实时计算系统

    Storm介绍 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网 ...

最新文章

  1. .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理
  2. linux常见操作命令及相关延伸
  3. LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记
  4. pxe linux自动安装系统,通过 PXE 自动安装操作系统(1):部署 PXE Server
  5. PowerDesigner 逆向工程 从SQL文件转换成PDM 从PDM转成CDM
  6. springboot使用ImportBeanDefinitionRegistrar 动态注册bean
  7. Python实现普通二叉树
  8. 收不到oracle邮件,dovecot不能够收邮件
  9. (1)Java 教程
  10. 开课吧课堂:finally如何使用?作用是什么?
  11. SSM项目连接远程Linux服务器的mysql 启动tomcat卡在了 Initializing Spring root WebApplicationContext...
  12. 【No buffer space available】异常解决
  13. 使用css动画实现loding效果
  14. gif图用photoshop快速抽帧,压缩,去底,修改时间
  15. 空间坐标转化——三维转二维
  16. 怎么改变png图片的大小kb?怎么更改png图片的大小?
  17. aspx文件怎么用服务器打开,高手教你轻松打开ASPX文件【图文教程】
  18. 2022武汉软件著作权申请流程
  19. Effective Java 读书笔记(一)
  20. ibm服务器p系列小型机,IBM Power系列小型机发展历史

热门文章

  1. mysql 半同步 主主_MySQL主从,半同步,主主复制
  2. 微信wechat.class.php,laravel使用组件实现微信网页授权登入
  3. smith标准型_线性系统理论(八)多项式矩阵Smith-McMillan标准型计算方法
  4. apache arm 交叉编译_移植apache2 ARM版 – 交叉编译apache2 | 学步园
  5. linux7 telnet乱码,CentOS7安装配置telnet-server
  6. android动态改变菜单栏,Android动态设置主题(使用RxBus模式)
  7. linux怎么启动端口服务,Linux 根据端口快速停止服务并启动的办法
  8. 目标检测第2步:如何在Windows 10下安装Anaconda?
  9. java注意的一些细节问题
  10. 计算机考研计划时间,2019计算机考研时间安排:复习时间规划