`
wankunde
  • 浏览: 162331 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jzmq消息发布订阅

 
阅读更多

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();
	}
}

 

分享到:
评论

相关推荐

    libzmq + jzmq Windows x64发布文件

    这样,Java开发者可以在他们的程序中使用ZMQ的特性,如发布/订阅、请求/响应、推/拉模式等,而无需离开Java生态系统。 zmq.jar是jzmq的Java类库文件,包含了所有与ZMQ交互所需的Java类和接口。Java开发者可以直接...

    jzmq的库文件

    jzmq是ZMQ在Java平台上的接口,允许Java开发者利用ZeroMQ的强大功能,例如点对点通信、发布/订阅模式以及请求/响应模式等。 描述中提到这些库文件是“已经编译好的”,意味着它们是经过编译过程转换为机器可执行的...

    jzmq2.13-api

    `jzmq`提供了多种类型的套接字,如`PUB`(发布者)、`SUB`(订阅者)、`REQ`(请求者)、`REP`(回复者)等,每种类型对应不同的消息模式。 3. **Binding and Connecting**:套接字可以绑定到一个地址,等待连接,或者连接...

    jzmq编译64bit

    6. **测试**:编译完成后,可以编写简单的Java代码来测试jzmq是否正确工作,例如创建一个简单的发布者和订阅者示例,验证消息传递功能。 文档中提供的步骤截图和实例代码应该会详细指导以上每个步骤,帮助开发者...

    jzmq_x64 dll和jar

    通过使用jzmq,Java开发者能够利用ZeroMQ的特性,如发布/订阅、请求/响应、推拉模式,以及流处理等,来构建健壮、可扩展的通信基础设施。 总结来说,jzmq_x64是针对64位操作系统的ZeroMQ Java绑定,包括了C语言库的...

    jzmq-master.zip

    它抽象出多种网络通信模式,如发布/订阅、请求/响应等,简化了程序员的工作。Jzmq是ZeroMQ在Java平台上的接口实现,使得Java开发者也能充分利用ZeroMQ的强大功能。 接下来,我们关注jzmq-master.zip这个压缩包。此...

    jzmq.tar.gz

    5. **发送和接收消息**:使用`send`和`recv`方法发送和接收消息,ZeroMQ支持多种消息模式,如请求-响应、发布-订阅等。 6. **错误处理和资源管理**:妥善处理可能出现的异常,并在完成工作后关闭套接字和上下文,...

    jzmq.dll 32位

    zmq.jar提供了包括发布/订阅、请求/响应、推送/拉取等多种消息模式,以及高可用性和负载均衡等特性,极大地简化了开发者进行分布式系统设计的工作。 在32位Win7系统下,这些组件的兼容性和稳定性至关重要。"32位win...

    编译好的jzmq so

    通过jzmq,Java开发者可以无缝地调用ZeroMQ的各种功能,包括发布/订阅模式、请求/响应模式等,实现高性能的分布式系统。 要使用jzmq,首先需要编译其对应的本地库,也就是SO文件。在Linux环境下,通常使用CMake工具...

    JZMQ的X64编译包(jar和dll)

    7. **发布/订阅模式**: ZeroMQ支持的一种通信模式,其中发布者发送消息到一个主题,而多个订阅者可以选择性地接收这些消息,适用于一对多的广播场景。 8. **请求/响应模式**: 另一种ZeroMQ支持的通信模式,一个...

    订阅发布信息

    在发布订阅模式中,ZMQ允许发布者将消息发送到一个主题,所有订阅该主题的订阅者都能接收到消息。ZMQ的高效性和灵活性在于它能够处理大量的并发连接,并且可以跨进程甚至跨网络进行通信。 在Java中集成ZMQ,我们...

    ZeroMQ jzmq Win32编译发布文件

    ZeroMQ的核心特性包括点对点连接、发布/订阅模式、请求/响应模式以及推拉模式,这些模式为开发者提供了灵活的通信结构。 jZMQ是ZeroMQ的一个Java绑定版本,它允许Java开发者利用ZeroMQ的强大功能。jZMQ是由JeroMQ...

    jzmq源代码

    jzmq作为其Java版本,让Java开发者能够充分利用ZeroMQ的特性,如分布式消息队列、请求-响应模式、发布-订阅模式等。 首先,我们要理解ZeroMQ的核心理念。ZeroMQ并非传统的消息队列,而是一种“智能套接字”(smart ...

    ZeorMQ-JZMQ-Win64.7z

    它允许应用程序以简单的方式创建高效的网络应用,例如发布/订阅、请求/响应和推拉模式,无需复杂的网络编程。 JZMQ是ZeroMQ的一个Java绑定,它允许Java开发者利用ZeroMQ的强大功能。JZMQ库(jzmq.dll)提供了与...

    jzmq.dll,zmq.jar

    零MQ是一个开源的消息队列库,它为开发者提供了高级的、灵活的通信模式,包括发布/订阅、请求/响应、推送/拉取等。在分布式计算和微服务架构中,零MQ经常被用作进程间通信(IPC)和网络间通信(IPC)的基础。 首先...

    zmq&jzmq的windows下的库文件

    - 它不仅提供了消息队列的功能,还可以实现点对点、发布/订阅和请求/响应等通信模式。 - 在Windows环境下,zmq的库文件是用于编译连接到ZeroMQ的C++或其他语言的应用程序的关键组件。 - 版本4.0.5是ZeroMQ的一个...

    zeroMQ/jzmq java例子

    发布/订阅(pub/sub)模式用于广播式通信,其中发布者(pub)发送消息,多个订阅者(sub)可以接收这些消息。订阅者可以选择订阅特定的主题。在jzmq中,发布者设置socket类型为`ZMQ.PUB`,订阅者设置为`ZMQ.SUB`,...

    jzmq_x64.rar

    使用这些组件,Java开发者可以在分布式环境中构建高效的通信系统,利用ZeroMQ的特性,如发布/订阅模式、请求/响应模式、推送/拉取模式等,进行进程间通信。ZeroMQ支持多种协议,如TCP、IPC、UDP等,还提供了高可用性...

Global site tag (gtag.js) - Google Analytics