一、环境搭建

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. NumPy和Pandas常用库
  2. cscope使用技巧
  3. lda主题词评论python_Python之酒店评论主题提取LDA主题模型
  4. [css] z-index有时不起作用的原因是什么?怎么解决?
  5. find border vertex
  6. UVA11310 Delivery Debacle【铺砖问题】
  7. word更新域后图片错误_你还不知道Word中F1~F12键作用?
  8. mysql常用功能点
  9. 清华大学中国人工智能学会:2019人工智能发展报告
  10. mencoder mencoder 安装使用及常用参数
  11. 三国论(16-20章)
  12. 计算导论与c语言基础pdf下载,Cousera 计算导论与C语言基础 学习笔记
  13. RHCE考试题及讲解(一)
  14. 中文乱码
  15. snipaste 方便快捷截图工具
  16. 第15周实践项目-洗牌(范型程序设计)(1)
  17. Laravel + EasyWeChat 微信登陆功能
  18. random_state = 42
  19. B250M主板上什么CPU
  20. 后台架构设计—数据存储层

热门文章

  1. labuladong 的算法小抄_来自GitHub 68.8k star的硬核算法教程
  2. android 多个textview,Android:多个textview像单个文本
  3. c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题?
  4. arm中断保护和恢复_嵌入式ARM系统异常和中断处理知识总结
  5. php header什么意思,php header是什么意思
  6. c语言不会可以学好java吗_有人说学了C语言,两天就能学会Java,两个星期就可以找工作?...
  7. android 电池高温关机,Android 关机问题分析指南
  8. springboot怎么返回404_深度分析:SpringBoot异常捕获与封装处理,看完你学会了吗?...
  9. 计算机毕业设计答辩慌?软工本科 Java EE 毕设项目答辩问题、答案汇总指南奉上
  10. 2021高考成绩查询大连,2021年大连高考各高中成绩及本科升学率数据排名及分析...