日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZeroMQ--使用jzmq进行编程

發(fā)布時間:2025/3/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZeroMQ--使用jzmq进行编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、環(huán)境搭建

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

常見問題:

出現(xiàn)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動態(tài)鏈接庫。?
解決方法1:export LD_LIBRARY_PATH=/usr/local/lib?
解決方法2:編輯/etc/ld.so.conf文件,增加一行:/usr/local/lib。再執(zhí)行sudo ldconfig命令?

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jzmq in java.library.path?
未設置native library?
在eclipse設置native library為/usr/local/lib?
或在jvm增加參數(shù)?
-Djava.library.path=/usr/local/lib?
或在啟動腳本中增加?
java -Djava.library.path=/usr/local/lib

二、使用jzmq進行編程

????1.創(chuàng)建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發(fā)送速度太快,在訂閱者尚未與發(fā)布者建立聯(lián)系時,已經(jīng)開始了數(shù)據(jù)發(fā)布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进行编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。